class Object

Public Instance Methods

as_json(*args) click to toggle source
# File lib/date_time_precision/format/json.rb, line 8
def as_json(*args)
  to_h
end
iso8601(fraction_digits=0) click to toggle source
# File lib/date_time_precision/format/iso8601.rb, line 20
def iso8601(fraction_digits=0)
  fraction_digits = fraction_digits.to_i
  precision = self.precision || 0
  format = ""
  if precision > DateTimePrecision::NONE
    # Add date part to format
    format << DateTimePrecision::ISO8601_DATE_FRAGMENTS.take([3,self.precision].min).join('-')
  end

  if precision > DateTimePrecision::DAY
    format << "T#{DateTimePrecision::ISO8601_TIME_FRAGMENTS.take(precision - 3).join(':')}"
  end

  output = sprintf(format, year < 0 ? 5 : 4, *self.fragments)

  # Fractional seconds
  if fraction_digits > 0 && usec? && usec > 0
    if fraction_digits <= 6
      output << '.' + sprintf('%06d', usec)[0, fraction_digits]
    else
      output << '.' + sprintf('%06d', usec) + '0' * (fraction_digits - 6)
    end
  end

  # Timezone
  if precision > DateTimePrecision::DAY
    if utc?
      output << 'Z'
    else
      off = utc_offset
      sign = off < 0 ? '-' : '+'
      output << sprintf('%s%02d:%02d', sign, *(off.abs / 60).divmod(60))
    end
  end
  
  output
end
to_json(opts = {}) click to toggle source
# File lib/date_time_precision/format/json.rb, line 12
def to_json(opts = {})
  to_h.to_json(opts)
end
xmlschema(fraction_digits=0) click to toggle source
# File lib/date_time_precision/format/iso8601.rb, line 12
def xmlschema(fraction_digits=0)
  iso8601(fraction_digits)
end