struct

Time::Span

Inherits Steppable / Comparable / Struct / Value / Object

Time::Span represents one period of time.

A Time::Span initializes with the specified period. Different numbers of arguments generate a Time::Span in different length. Check all #new methods for details.

Time::Span.new(nanoseconds: 10_000)                           # => 00:00:00.000010000
Time::Span.new(hours: 10, minutes: 10, seconds: 10)           # => 10:10:10
Time::Span.new(days: 10, hours: 10, minutes: 10, seconds: 10) # => 10.10:10:10

Calculation between Time also returns a Time::Span.

span = Time.utc(2015, 10, 10) - Time.utc(2015, 9, 10)
span       # => 30.00:00:00
span.class # => Time::Span

Inspection:

span = Time::Span.new(hours: 20, minutes: 10, seconds: 10)
span.hours   # => 20
span.minutes # => 10
span.seconds # => 10

Calculation:

a = Time::Span.new(hours: 20, minutes: 10, seconds: 10)
b = Time::Span.new(hours: 10, minutes: 10, seconds: 10)
c = a - b # => 10:00:00
c.hours   # => 10

Constants

MAX = new(seconds: Int64::MAX, nanoseconds: 999999999)
MIN = new(seconds: Int64::MIN, nanoseconds: -999999999)
ZERO = new(nanoseconds: 0)

Constructors

additive_identity

Returns the additive identity of this type.

This is zero.

Source
new(*, seconds : Int, nanoseconds : Int)

Creates a new Time::Span from seconds and nanoseconds.

Nanoseconds get normalized in the range of 0...1_000_000_000, the nanosecond overflow gets added as seconds.

Time::Span.new(seconds: 30)                 # => 00:00:30
Time::Span.new(seconds: 5, nanoseconds: 12) # => 00:00:05.000000012
Source
new(*, nanoseconds : Int)

Creates a new Time::Span from the nanoseconds given

Nanoseconds get normalized in the range of 0...1_000_000_000, the nanosecond overflow gets added as seconds.

Time::Span.new(nanoseconds: 500_000_000)   # => 00:00:00.500000000
Time::Span.new(nanoseconds: 5_500_000_000) # => 00:00:05.500000000
Source
new(*, weeks : Int = 0, days : Int = 0, hours : Int = 0, minutes : Int = 0, seconds : Int = 0, nanoseconds : Int = 0)

Creates a new Time::Span from the *weeks, days, hours, minutes, seconds and nanoseconds given

Any time unit can be omitted.

Time::Span.new(days: 1)                                                   # => 1.00:00:00
Time::Span.new(days: 1, hours: 2, minutes: 3)                             # => 1.02:03:00
Time::Span.new(days: 1, hours: 2, minutes: 3, seconds: 4, nanoseconds: 5) # => 1.02:03:04.000000005
Source

Class methods

zero

Creates a new Time::Span representing a span of zero time.

Source

Instance methods

*(number : Int) : Time::Span

Returns a Time::Span that is number times longer.

Source
*(number : Float) : Time::Span

Returns a Time::Span that is number times longer.

Source
+(other : self) : Time::Span
Source
-(other : self) : Time::Span
Source
/(number : Int) : Time::Span

Returns a Time::Span that is divided by number.

Source
/(number : Float) : Time::Span

Returns a Time::Span that is divided by number.

Source
/(other : self) : Float64
Source
<=>(other : self)
Source
abs

Returns the absolute (non-negative) amount of time this Time::Span represents by removing the sign.

Source
ago

Returns a Time that happens earlier by self than the current time.

Source
days

Returns the number of full days in this time span.

(5.days + 25.hours).days # => 6_i64
Source
from_now

Returns a Time that happens later by self than the current time.

Source
hours

Returns the number of full hours of the day (0..23) in this time span.

Source
inspect(io : IO) : Nil

Appends this struct's name and instance variables names and values to the given IO.

struct Point
  def initialize(@x : Int32, @y : Int32)
  end
end

p1 = Point.new 1, 2
p1.to_s    # "Point(@x=1, @y=2)"
p1.inspect # "Point(@x=1, @y=2)"
Source
microseconds

Returns the number of microseconds of the second (0..999999) in this time span.

Source
milliseconds

Returns the number of milliseconds of the second (0..999) in this time span.

Source
minutes

Returns the number of full minutes of the hour (0..59) in this time span.

Source
nanoseconds

Returns the number of nanoseconds of the second (0..999_999_999) in this time span.

Source
negative?

Returns true if self represents a negative time span.

2.hours.negative? # => false
0.days.negative?  # => false
-3.days.negative? # => true
Source
positive?

Returns true if self represents a positive time span.

2.hours.positive? # => true
0.days.positive?  # => false
-3.days.positive? # => false
Source
seconds

Returns the number of full seconds of the minute (0..59) in this time span.

Source
sign

Returns the sign of this time span.

Values are -1, 0, 1 if self is smaller, equal, bigger compared to ZERO.

Source
to_f

Alias of total_seconds.

Source
to_i

Returns the number of full seconds.

Source
total_days

Converts to a (possibly fractional) number of days.

(36.hours).total_days # => 1.5
Source
total_hours

Converts to a (possibly fractional) number of hours.

Source
total_microseconds

Converts to a number of microseconds.

Source
total_milliseconds

Converts to a number of milliseconds.

Source
total_minutes

Converts to a (possibly fractional) number of minutes.

Source
total_nanoseconds

Converts to a number of nanoseconds.

Source
total_seconds

Converts to a (possibly fractional) number of seconds.

Source
total_weeks

Converts to a (possibly fractional) number of weeks.

(4.weeks + 5.days + 6.hours).total_weeks # => 4.75
Source
zero?

Returns true if self represents a span of zero time.

2.hours.zero?  # => false
0.days.zero?   # => true
1.second.zero? # => false
Source