123456789_123456789_123456789_123456789_123456789_

Class: TZInfo::Timestamp

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, Comparable
Inherits: Object
Defined in: lib/tzinfo/timestamp.rb

Overview

A time represented as an Integer number of seconds since 1970-01-01 00:00:00 UTC (ignoring leap seconds and using the proleptic Gregorian calendar), the fraction through the second (sub_second as a Rational) and an optional UTC offset. Like Ruby's Time class, Timestamp can distinguish between a local time with a zero offset and a time specified explicitly as UTC.

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(value, sub_second = 0, utc_offset = nil) ⇒ Timestamp

Initializes a new Timestamp.

Parameters:

  • value (Integer)

    the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds.

  • sub_second (Numeric) (defaults to: 0)

    the fractional part of the second as either a Rational that is greater than or equal to 0 and less than 1, or the Integer 0.

  • utc_offset (Object) (defaults to: nil)

    either nil for a Timestamp without a specified offset, an offset from UTC specified as an Integer number of seconds or the Symbol :utc).

Raises:

  • (ArgumentError)

    if value is not an Integer.

  • (ArgumentError)

    if sub_second is not a Rational, or the Integer 0.

  • (RangeError)

    if sub_second is a Rational but that is less than 0 or greater than or equal to 1.

  • (ArgumentError)

    if utc_offset is not nil, not an Integer and not the Symbol :utc.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 344

def initialize(value, sub_second = 0, utc_offset = nil)
  raise ArgumentError, 'value must be an Integer' unless value.kind_of?(Integer)
  raise ArgumentError, 'sub_second must be a Rational or the Integer 0' unless (sub_second.kind_of?(Integer) && sub_second == 0) || sub_second.kind_of?(Rational)
  raise RangeError, 'sub_second must be >= 0 and < 1' if sub_second < 0 || sub_second >= 1
  raise ArgumentError, 'utc_offset must be an Integer, :utc or nil' if utc_offset && utc_offset != :utc && !utc_offset.kind_of?(Integer)
  initialize!(value, sub_second, utc_offset)
end

Class Method Details

.create(year, month = 1, day = 1, hour = 0, minute = 0, second = 0, sub_second = 0, utc_offset = nil) ⇒ Timestamp

Returns a new Timestamp representing the (proleptic Gregorian calendar) date and time specified by the supplied parameters.

If utc_offset is nil, :utc or 0, the date and time parameters will be interpreted as representing a UTC date and time. Otherwise the date and time parameters will be interpreted as a local date and time with the given offset.

Parameters:

  • year (Integer)

    the year.

  • month (Integer) (defaults to: 1)

    the month (1-12).

  • day (Integer) (defaults to: 1)

    the day of the month (1-31).

  • hour (Integer) (defaults to: 0)

    the hour (0-23).

  • minute (Integer) (defaults to: 0)

    the minute (0-59).

  • second (Integer) (defaults to: 0)

    the second (0-59).

  • sub_second (Numeric) (defaults to: 0)

    the fractional part of the second as either a Rational that is greater than or equal to 0 and less than 1, or the Integer 0.

  • utc_offset (Object) (defaults to: nil)

    either nil for a Timestamp without a specified offset, an offset from UTC specified as an Integer number of seconds or the Symbol :utc).

Returns:

  • (Timestamp)

    a new Timestamp representing the specified (proleptic Gregorian calendar) date and time.

Raises:

  • (ArgumentError)

    if either of year, month, day, hour, minute, or second is not an Integer.

  • (ArgumentError)

    if sub_second is not a Rational, or the Integer 0.

  • (ArgumentError)

    if utc_offset is not nil, not an Integer and not the Symbol :utc.

  • (RangeError)

    if month is not between 1 and 12.

  • (RangeError)

    if day is not between 1 and 31.

  • (RangeError)

    if hour is not between 0 and 23.

  • (RangeError)

    if minute is not between 0 and 59.

  • (RangeError)

    if second is not between 0 and 59.

  • (RangeError)

    if sub_second is a Rational but that is less than 0 or greater than or equal to 1.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 55

def create(year, month = 1, day = 1, hour = 0, minute = 0, second = 0, sub_second = 0, utc_offset = nil)
  raise ArgumentError, 'year must be an Integer' unless year.kind_of?(Integer)
  raise ArgumentError, 'month must be an Integer' unless month.kind_of?(Integer)
  raise ArgumentError, 'day must be an Integer' unless day.kind_of?(Integer)
  raise ArgumentError, 'hour must be an Integer' unless hour.kind_of?(Integer)
  raise ArgumentError, 'minute must be an Integer' unless minute.kind_of?(Integer)
  raise ArgumentError, 'second must be an Integer' unless second.kind_of?(Integer)
  raise RangeError, 'month must be between 1 and 12' if month < 1 || month > 12
  raise RangeError, 'day must be between 1 and 31' if day < 1 || day > 31
  raise RangeError, 'hour must be between 0 and 23' if hour < 0 || hour > 23
  raise RangeError, 'minute must be between 0 and 59' if minute < 0 || minute > 59
  raise RangeError, 'second must be between 0 and 59' if second < 0 || second > 59

  # Based on days_from_civil from https://howardhinnant.github.io/date_algorithms.html#days_from_civil
  after_february = month > 2
  year -= 1 unless after_february
  era = year / 400
  year_of_era = year - era * 400
  day_of_year = (153 * (month + (after_february ? -3 : 9)) + 2) / 5 + day - 1
  day_of_era = year_of_era * 365 + year_of_era / 4 - year_of_era / 100 + day_of_year
  days_since_epoch = era * 146097 + day_of_era - 719468
  value = ((days_since_epoch * 24 + hour) * 60 + minute) * 60 + second
  value -= utc_offset if utc_offset.kind_of?(Integer)

  new(value, sub_second, utc_offset)
end

.for(value, offset = :preserve) {|timestamp| ... } ⇒ Object

When used without a block, returns a Timestamp representation of a given Time, DateTime or Timestamp.

When called with a block, the Timestamp representation of value is passed to the block. The block must then return a Timestamp, which will be converted back to the type of the initial value. If the initial value was a Timestamp, the block result will be returned. If the initial value was a DateTime, a Gregorian DateTime will be returned.

The UTC offset of value can either be preserved (the Timestamp representation will have the same UTC offset as value), ignored (the Timestamp representation will have no defined UTC offset), or treated as though it were UTC (the Timestamp representation will have a #utc_offset of 0 and #utc? will return true).

Parameters:

  • value (Object)

    a Time, DateTime or Timestamp.

  • offset (Symbol) (defaults to: :preserve)

    either :preserve to preserve the offset of value, :ignore to ignore the offset of value and create a Timestamp with an unspecified offset, or :treat_as_utc to treat the offset of value as though it were UTC and create a UTC Timestamp.

Yields:

  • (timestamp)

    if a block is provided, the Timestamp representation is passed to the block.

Yield Parameters:

  • timestamp (Timestamp)

    the Timestamp representation of value.

Yield Returns:

  • (Timestamp)

    a Timestamp to be converted back to the type of value.

Returns:

  • (Object)

    if called without a block, the Timestamp representation of value, otherwise the result of the block, converted back to the type of value.

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 112

def for(value, offset = :preserve)
  raise ArgumentError, 'value must be specified' unless value

  case offset
    when :ignore
      ignore_offset = true
      target_utc_offset = nil
    when :treat_as_utc
      ignore_offset = true
      target_utc_offset = :utc
    when :preserve
      ignore_offset = false
      target_utc_offset = nil
    else
      raise ArgumentError, 'offset must be :preserve, :ignore or :treat_as_utc'
  end

  time_like = false
  timestamp = case value
    when Time
      for_time(value, ignore_offset, target_utc_offset)
    when DateTime
      for_datetime(value, ignore_offset, target_utc_offset)
    when Timestamp
      for_timestamp(value, ignore_offset, target_utc_offset)
    else
      raise ArgumentError, "#{value.class} values are not supported" unless is_time_like?(value)
      time_like = true
      for_time_like(value, ignore_offset, target_utc_offset)
  end

  if block_given?
    result = yield timestamp
    raise ArgumentError, 'block must return a Timestamp' unless result.kind_of?(Timestamp)

    case value
      when Time
        result.to_time
      when DateTime
        result.to_datetime
      else # A Time-like value or a Timestamp
        time_like ? result.to_time : result
    end
  else
    timestamp
  end
end

.for_datetime(datetime, ignore_offset, target_utc_offset) ⇒ Timestamp (private)

Creates a Timestamp that represents a given DateTime, optionally ignoring the offset.

Parameters:

  • datetime (DateTime)

    a DateTime.

  • ignore_offset (Boolean)

    whether to ignore the offset of datetime.

  • target_utc_offset (Object)

    if ignore_offset is true, the UTC offset of the result (:utc, nil or an Integer).

Returns:

  • (Timestamp)

    the Timestamp representation of datetime.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 231

def for_datetime(datetime, ignore_offset, target_utc_offset)
  value = (datetime.jd - JD_EPOCH) * 86400 + datetime.sec + datetime.min * 60 + datetime.hour * 3600
  sub_second = datetime.sec_fraction

  if ignore_offset
    utc_offset = target_utc_offset
  else
    utc_offset = (datetime.offset * 86400).to_i
    value -= utc_offset
  end

  new!(value, sub_second, utc_offset)
end

.for_time(time, ignore_offset, target_utc_offset) ⇒ Timestamp (private)

Creates a Timestamp that represents a given Time, optionally ignoring the offset.

Parameters:

  • time (Time)

    a Time.

  • ignore_offset (Boolean)

    whether to ignore the offset of time.

  • target_utc_offset (Object)

    if ignore_offset is true, the UTC offset of the result (:utc, nil or an Integer).

Returns:

  • (Timestamp)

    the Timestamp representation of time.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 206

def for_time(time, ignore_offset, target_utc_offset)
  value = time.to_i
  sub_second = time.subsec

  if ignore_offset
    utc_offset = target_utc_offset
    value += time.utc_offset
  elsif time.utc?
    utc_offset = :utc
  else
    utc_offset = time.utc_offset
  end

  new!(value, sub_second, utc_offset)
end

.for_time_like(time_like, ignore_offset, target_utc_offset) ⇒ Timestamp (private)

Creates a Timestamp that represents a given Time-like object, optionally ignoring the offset (if the time_like responds to utc_offset).

Parameters:

  • time_like (Object)

    a Time-like object.

  • ignore_offset (Boolean)

    whether to ignore the offset of time.

  • target_utc_offset (Object)

    if ignore_offset is true, the UTC offset of the result (:utc, nil or an Integer).

Returns:

  • (Timestamp)

    the Timestamp representation of time_like.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 296

def for_time_like(time_like, ignore_offset, target_utc_offset)
  value = time_like.to_i
  sub_second = time_like.subsec.to_r

  if ignore_offset
    utc_offset = target_utc_offset
    value += time_like.utc_offset.to_i if time_like.respond_to?(:utc_offset)
  elsif time_like.respond_to?(:utc_offset)
    utc_offset = time_like.utc_offset.to_i
  else
    utc_offset = 0
  end

  new(value, sub_second, utc_offset)
end

.for_timestamp(timestamp, ignore_offset, target_utc_offset) ⇒ Timestamp (private)

Returns a Timestamp that represents another Timestamp, optionally ignoring the offset. If the result would be identical to value, the same instance is returned. If the passed in value is an instance of a subclass of Timestamp, then a new Timestamp will always be returned.

Parameters:

  • timestamp (Timestamp)

    a Timestamp.

  • ignore_offset (Boolean)

    whether to ignore the offset of timestamp.

  • target_utc_offset (Object)

    if ignore_offset is true, the UTC offset of the result (:utc, nil or an Integer).

Returns:

  • (Timestamp)

    a [Timestamp] representation of timestamp.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 256

def for_timestamp(timestamp, ignore_offset, target_utc_offset)
  if ignore_offset
    if target_utc_offset
      unless target_utc_offset == :utc && timestamp.utc? || timestamp.utc_offset == target_utc_offset
        return new!(timestamp.value + (timestamp.utc_offset || 0), timestamp.sub_second, target_utc_offset)
      end
    elsif timestamp.utc_offset
      return new!(timestamp.value + timestamp.utc_offset, timestamp.sub_second)
    end
  end

  unless timestamp.instance_of?(Timestamp)
    # timestamp is identical in value, sub_second and utc_offset but is a
    # subclass (i.e. TimestampWithOffset). Return a new Timestamp
    # instance.
    return new!(timestamp.value, timestamp.sub_second, timestamp.utc? ? :utc : timestamp.utc_offset)
  end

  timestamp
end

.is_time_like?(value) ⇒ Boolean (private)

Determines if an object is like a Time (for the purposes of converting to a Timestamp with .for), responding to to_i and subsec.

Parameters:

  • value (Object)

    an object to test.

Returns:

  • (Boolean)

    true if the object is Time-like, otherwise false.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 283

def is_time_like?(value)
  value.respond_to?(:to_i) && value.respond_to?(:subsec)
end

.new!(value, sub_second = 0, utc_offset = nil) ⇒ Timestamp (private)

Constructs a new instance of self (i.e. Timestamp or a subclass of Timestamp) without validating the parameters. This method is used internally within Timestamp to avoid the overhead of checking parameters.

Parameters:

  • value (Integer)

    the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds.

  • sub_second (Numeric) (defaults to: 0)

    the fractional part of the second as either a Rational that is greater than or equal to 0 and less than 1, or the Integer 0.

  • utc_offset (Object) (defaults to: nil)

    either nil for a Timestamp without a specified offset, an offset from UTC specified as an Integer number of seconds or the Symbol :utc).

Returns:

  • (Timestamp)

    a new instance of self.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 192

def new!(value, sub_second = 0, utc_offset = nil)
  result = allocate
  result.send(:initialize!, value, sub_second, utc_offset)
  result
end

.utc(value, sub_second = 0)

Creates a new UTC Timestamp.

Parameters:

  • value (Integer)

    the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds.

  • sub_second (Numeric) (defaults to: 0)

    the fractional part of the second as either a Rational that is greater than or equal to 0 and less than 1, or the Integer 0.

Raises:

  • (ArgumentError)

    if value is not an Integer.

  • (ArgumentError)

    if sub_second is not a Rational, or the Integer 0.

  • (RangeError)

    if sub_second is a Rational but that is less than 0 or greater than or equal to 1.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 172

def utc(value, sub_second = 0)
  new(value, sub_second, :utc)
end

Instance Attribute Details

#sub_secondNumeric (readonly)

Returns:

  • (Numeric)

    the fraction of a second elapsed since timestamp as either a Rational or the Integer 0. Always greater than or equal to 0 and less than 1.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 321

attr_reader :sub_second

#utc?Boolean (readonly)

Returns:

  • (Boolean)

    true if this Timestamp represents UTC, false if the Timestamp wasn't specified as UTC or nil if the Timestamp has no specified offset.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 355

def utc?
  @utc
end

#utc_offsetInteger (readonly)

Returns:

  • (Integer)

    the offset from UTC in seconds or nil if the Timestamp doesn't have a specified offset.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 325

attr_reader :utc_offset

#valueInteger (readonly)

Returns:

  • (Integer)

    the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds (i.e. each day is treated as if it were 86,400 seconds long).

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 316

attr_reader :value

Instance Method Details

#<=>(t) ⇒ Integer

Compares this Timestamp with another.

Timestamp instances without a defined UTC offset are not comparable with Timestamp instances that have a defined UTC offset.

Parameters:

  • t (Timestamp)

    the Timestamp to compare this instance with.

Returns:

  • (Integer)

    -1, 0 or 1 depending if this instance is earlier, equal or later than t respectively. Returns nil when comparing a Timestamp that does not have a defined UTC offset with a Timestamp that does have a defined UTC offset. Returns nil if t is not a Timestamp.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 454

def <=>(t)
  return nil unless t.kind_of?(Timestamp)
  return nil if utc_offset && !t.utc_offset
  return nil if !utc_offset && t.utc_offset

  result = value <=> t.value
  result = sub_second <=> t.sub_second if result == 0
  result
end

#add_and_set_utc_offset(seconds, utc_offset) ⇒ Timestamp

Adds a number of seconds to the Timestamp value, setting the UTC offset of the result.

Parameters:

  • seconds (Integer)

    the number of seconds to be added.

  • utc_offset (Object)

    either nil for a Timestamp without a specified offset, an offset from UTC specified as an Integer number of seconds or the Symbol :utc).

Returns:

  • (Timestamp)

    the result of adding seconds to the Timestamp value as a new Timestamp instance with the chosen utc_offset.

Raises:

  • (ArgumentError)

    if seconds is not an Integer.

  • (ArgumentError)

    if utc_offset is not nil, not an Integer and not the Symbol :utc.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 372

def add_and_set_utc_offset(seconds, utc_offset)
  raise ArgumentError, 'seconds must be an Integer' unless seconds.kind_of?(Integer)
  raise ArgumentError, 'utc_offset must be an Integer, :utc or nil' if utc_offset && utc_offset != :utc && !utc_offset.kind_of?(Integer)
  return self if seconds == 0 && utc_offset == (@utc ? :utc : @utc_offset)
  Timestamp.send(:new!, @value + seconds, @sub_second, utc_offset)
end

#eql?

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 464

alias eql? ==

#hashInteger

Returns:

  • (Integer)

    a hash based on the value, sub-second and whether there is a defined UTC offset.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 468

def hash
  [@value, @sub_second, !!@utc_offset].hash
end

#initialize!(value, sub_second = 0, utc_offset = nil) (private)

Initializes a new Timestamp without validating the parameters. This method is used internally within Timestamp to avoid the overhead of checking parameters.

Parameters:

  • value (Integer)

    the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds.

  • sub_second (Numeric) (defaults to: 0)

    the fractional part of the second as either a Rational that is greater than or equal to 0 and less than 1, or the Integer 0.

  • utc_offset (Object) (defaults to: nil)

    either nil for a Timestamp without a specified offset, an offset from UTC specified as an Integer number of seconds or the Symbol :utc).

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 538

def initialize!(value, sub_second = 0, utc_offset = nil)
  @value = value

  # Convert Rational(0,1) to 0.
  @sub_second = sub_second == 0 ? 0 : sub_second

  if utc_offset
    @utc = utc_offset == :utc
    @utc_offset = @utc ? 0 : utc_offset
  else
    @utc = @utc_offset = nil
  end
end

#inspectString

Returns:

  • (String)

    the internal object state as a programmer-readable String.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 474

def inspect
  "#<#{self.class}: @value=#{@value}, @sub_second=#{@sub_second}, @utc_offset=#{@utc_offset.inspect}, @utc=#{@utc.inspect}>"
end

#new_datetime(klass = DateTime) (protected)

This method is for internal use only.

Constructs a new instance of a DateTime or DateTime-like class with the same #value, #sub_second and #utc_offset as this Timestamp.

Parameters:

  • klass (Class) (defaults to: DateTime)

    the class to instantiate.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 496

def new_datetime(klass = DateTime)
  # Can't specify the start parameter unless the jd parameter is an exact number of days.
  # Use #gregorian instead.
  datetime = klass.jd(JD_EPOCH + ((@value.to_r + @sub_second) / 86400)).gregorian
  @utc_offset && @utc_offset != 0 ? datetime.new_offset(Rational(@utc_offset, 86400)) : datetime
end

#new_time(klass = Time) (protected)

This method is for internal use only.

Creates a new instance of a Time or Time-like class matching the #value and #sub_second of this Timestamp, but not setting the offset.

Parameters:

  • klass (Class) (defaults to: Time)

    the class to instantiate.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 486

def new_time(klass = Time)
  klass.at(@value, @sub_second * 1_000_000)
end

#strftime(format) ⇒ String

Formats this Timestamp according to the directives in the given format string.

Parameters:

  • format (String)

    the format string. Please refer to Time#strftime for a list of supported format directives.

Returns:

  • (String)

    the formatted Timestamp.

Raises:

  • (ArgumentError)

    if format is not specified.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 426

def strftime(format)
  raise ArgumentError, 'format must be specified' unless format
  to_time.strftime(format)
end

#sub_second_to_sString (private)

Converts the #sub_second value to a String suitable for appending to the String representation of a Timestamp.

Returns:

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 518

def sub_second_to_s
  if @sub_second == 0
    ''
  else
    " #{@sub_second.numerator}/#{@sub_second.denominator}"
  end
end

#to_datetimeDateTime

Converts this Timestamp to a Gregorian DateTime.

Returns:

  • (DateTime)

    a Gregorian DateTime representation of this Timestamp. If the UTC offset of this Timestamp is not specified, a UTC DateTime will be returned.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 406

def to_datetime
  new_datetime
end

#to_iInteger

Converts this Timestamp to an Integer number of seconds since 1970-01-01 00:00:00 UTC (ignoring leap seconds).

Returns:

  • (Integer)

    an Integer representation of this Timestamp (the number of seconds since 1970-01-01 00:00:00 UTC ignoring leap seconds).

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 415

def to_i
  value
end

#to_sString

Returns:

  • (String)

    a String representation of this Timestamp.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 432

def to_s
  return value_and_sub_second_to_s unless @utc_offset
  return "#{value_and_sub_second_to_s} UTC" if @utc

  sign = @utc_offset >= 0 ? '+' : '-'
  min, sec = @utc_offset.abs.divmod(60)
  hour, min = min.divmod(60)

  "#{value_and_sub_second_to_s(@utc_offset)} #{sign}#{'%02d' % hour}:#{'%02d' % min}#{sec > 0 ? ':%02d' % sec : nil}#{@utc_offset != 0 ? " (#{value_and_sub_second_to_s} UTC)" : nil}"
end

#to_timeTime

Converts this Timestamp to a Time.

Returns:

  • (Time)

    a Time representation of this Timestamp. If the UTC offset of this Timestamp is not specified, a UTC Time will be returned.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 391

def to_time
  time = new_time

  if @utc_offset && !@utc
    time.localtime(@utc_offset)
  else
    time.utc
  end
end

#utcTimestamp (readonly)

Returns:

  • (Timestamp)

    a UTC Timestamp equivalent to this instance. Returns self if self.utc? is true.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 381

def utc
  return self if @utc
  Timestamp.send(:new!, @value, @sub_second, :utc)
end

#value_and_sub_second_to_s(offset = 0) ⇒ String (private)

Converts the value and sub-seconds to a String, adding on the given offset.

Parameters:

  • offset (Integer) (defaults to: 0)

    the offset to add to the value.

Returns:

  • (String)

    the value and sub-seconds.

[ GitHub ]

  
# File 'lib/tzinfo/timestamp.rb', line 510

def value_and_sub_second_to_s(offset = 0)
  "#{@value + offset}#{sub_second_to_s}"
end