struct Time::Span
Overview
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
Included Modules
Defined in:
time/span.crConstant Summary
- MAX =
new(seconds: Int64::MAX, nanoseconds: 999999999)
- MIN =
new(seconds: Int64::MIN, nanoseconds: -999999999)
- ZERO =
new(nanoseconds: 0)
Constructors
- .additive_identity : self
Returns the additive identity of this type.
- .new(*, seconds : Int, nanoseconds : Int)
Creates a new
Time::Span
from seconds and nanoseconds. - .new(*, nanoseconds : Int)
Creates a new
Time::Span
from the nanoseconds given - .new(*, days : Int = 0, hours : Int = 0, minutes : Int = 0, seconds : Int = 0, nanoseconds : Int = 0)
Creates a new
Time::Span
from the days, hours, minutes, seconds and nanoseconds given
Class Method Summary
- .zero : Time::Span
Creates a new
Time::Span
representing a span of zero time.
Instance Method Summary
- #*(number : Int) : Time::Span
Returns a
Time::Span
that is number times longer. - #*(number : Float) : Time::Span
Returns a
Time::Span
that is number times longer. - #+(other : self) : Time::Span
- #+ : self
- #-(other : self) : Time::Span
- #- : Time::Span
- #/(number : Int) : Time::Span
Returns a
Time::Span
that is divided by number. - #/(number : Float) : Time::Span
Returns a
Time::Span
that is divided by number. - #/(other : self) : Float64
- #<=>(other : self)
- #abs : Time::Span
Returns the absolute (non-negative) amount of time this
Time::Span
represents by removing the sign. - #ago : Time
Returns a
Time
that happens earlier byself
than the current time. - #days : Int64
Returns the number of full days in this time span.
- #from_now : Time
Returns a
Time
that happens later byself
than the current time. - #hours : Int32
Returns the number of full hours of the day (
0..23
) in this time span. - #inspect(io : IO) : Nil
Appends this struct's name and instance variables names and values to the given IO.
- #microseconds : Int32
Returns the number of microseconds of the second (
0..999999
) in this time span. - #milliseconds : Int32
Returns the number of milliseconds of the second (
0..999
) in this time span. - #minutes : Int32
Returns the number of full minutes of the hour (
0..59
) in this time span. - #nanoseconds : Int32
Returns the number of nanoseconds of the second (
0..999_999_999
) in this time span. - #negative? : Bool
Returns
true
ifself
represents a negative time span. - #positive? : Bool
Returns
true
ifself
represents a positive time span. - #seconds : Int32
Returns the number of full seconds of the minute (
0..59
) in this time span. - #sign : Int32
Returns the sign of this time span.
- #to_f : Float64
Alias of
#total_seconds
. - #to_i : Int64
Returns the number of full seconds.
- #total_days : Float64
Converts to a (possibly fractional) number of days.
- #total_hours : Float64
Converts to a (possibly fractional) number of hours.
- #total_microseconds : Float64
Converts to a number of microseconds.
- #total_milliseconds : Float64
Converts to a number of milliseconds.
- #total_minutes : Float64
Converts to a (possibly fractional) number of minutes.
- #total_nanoseconds : Float64
Converts to a number of nanoseconds.
- #total_seconds : Float64
Converts to a (possibly fractional) number of seconds.
- #total_weeks : Float64
Converts to a (possibly fractional) number of weeks.
- #zero? : Bool
Returns
true
ifself
represents a span of zero time.
Instance methods inherited from module Steppable
step(*, to limit = nil, by step, exclusive : Bool = false, &) : Nilstep(*, to limit = nil, by step, exclusive : Bool = false) step
Instance methods inherited from module Comparable(Time::Span)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) : Bool >, >=(other : T) >=, clamp(min, max)clamp(range : Range) clamp
Instance methods inherited from struct Struct
==(other) : Bool ==, hash(hasher) hash, inspect(io : IO) : Nil inspect, pretty_print(pp) : Nil pretty_print, to_s(io : IO) : Nil to_s Instance methods inherited from struct Value
==(other : JSON::Any)==(other : YAML::Any)
==(other) ==, dup dup
Instance methods inherited from class Object
! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Constructor Detail
def self.new(*, seconds : Int, nanoseconds : Int)Source
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
def self.new(*, nanoseconds : Int)Source
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
def self.new(*, days : Int = 0, hours : Int = 0, minutes : Int = 0, seconds : Int = 0, nanoseconds : Int = 0)Source
Creates a new Time::Span
from the 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) # => 01:02:03 Time::Span.new(days: 1, hours: 2, minutes: 3, seconds: 4, nanoseconds: 5) # => 1.02:03:04.000000005
Class Method Detail
def self.zero : Time::SpanSource
Creates a new Time::Span
representing a span of zero time.
Instance Method Detail
def *(number : Int) : Time::SpanSource
Returns a Time::Span
that is number times longer.
def *(number : Float) : Time::SpanSource
Returns a Time::Span
that is number times longer.
def +(other : self) : Time::SpanSource
def + : selfSource
def -(other : self) : Time::SpanSource
def - : Time::SpanSource
def /(number : Int) : Time::SpanSource
Returns a Time::Span
that is divided by number.
def /(number : Float) : Time::SpanSource
Returns a Time::Span
that is divided by number.
def <=>(other : self)Source
def abs : Time::SpanSource
Returns the absolute (non-negative) amount of time this Time::Span
represents by removing the sign.
def days : Int64Source
Returns the number of full days in this time span.
(5.days + 25.hours).days # => 6_i64
def inspect(io : IO) : NilSource
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)"
def microseconds : Int32Source
Returns the number of microseconds of the second (0..999999
) in this time span.
def milliseconds : Int32Source
Returns the number of milliseconds of the second (0..999
) in this time span.
def nanoseconds : Int32Source
Returns the number of nanoseconds of the second (0..999_999_999
) in this time span.
def negative? : BoolSource
Returns true
if self
represents a negative time span.
2.hours.negative? # => false 0.days.negative? # => false -3.days.negative? # => true
def positive? : BoolSource
Returns true
if self
represents a positive time span.
2.hours.positive? # => true 0.days.positive? # => false -3.days.positive? # => false
def seconds : Int32Source
Returns the number of full seconds of the minute (0..59
) in this time span.
def sign : Int32Source
Returns the sign of this time span.
Values are -1
, 0
, 1
if self
is smaller, equal, bigger compared to ZERO
.
def to_f : Float64Source
Alias of #total_seconds
.
def total_days : Float64Source
Converts to a (possibly fractional) number of days.
(36.hours).total_days # => 1.5
def total_weeks : Float64Source
Converts to a (possibly fractional) number of weeks.
(4.weeks + 5.days + 6.hours).total_weeks # => 4.75
def zero? : BoolSource
Returns true
if self
represents a span of zero time.
2.hours.zero? # => false 0.days.zero? # => true 1.second.zero? # => false
© 2012–2021 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.2.1/Time/Span.html