class Time
Public Class Methods
Source
# File vendor/bundle/ruby/3.4.0/gems/json-2.15.2/lib/json/add/time.rb, line 9 def self.json_create(object) if usec = object.delete('u') # used to be tv_usec -> tv_nsec object['n'] = usec * 1000 end at(object['s'], Rational(object['n'], 1000)) end
See as_json.
Public Instance Methods
Source
# File vendor/bundle/ruby/3.4.0/gems/json-2.15.2/lib/json/add/time.rb, line 32 def as_json(*) { JSON.create_id => self.class.name, 's' => tv_sec, 'n' => tv_nsec, } end
Methods Time#as_json and Time.json_create may be used to serialize and deserialize a Time object; see Marshal.
Method Time#as_json serializes self, returning a 2-element hash representing self:
require 'json/add/time' x = Time.now.as_json # => {"json_class"=>"Time", "s"=>1700931656, "n"=>472846644}
Method JSON.create deserializes such a hash, returning a Time object:
Time.json_create(x) # => 2023-11-25 11:00:56.472846644 -0600
Source
static VALUE
time_to_date(VALUE self)
{
    VALUE y, nth, ret;
    int ry, m, d;
    y = f_year(self);
    m = FIX2INT(f_mon(self));
    d = FIX2INT(f_mday(self));
    decode_year(y, -1, &nth, &ry);
    ret = d_simple_new_internal(cDate,
                                nth, 0,
                                GREGORIAN,
                                ry, m, d,
                                HAVE_CIVIL);
    {
        get_d1(ret);
        set_sg(dat, DEFAULT_SG);
    }
    return ret;
}
          Returns a Date object which denotes self.
Source
static VALUE
time_to_datetime(VALUE self)
{
    VALUE y, sf, nth, ret;
    int ry, m, d, h, min, s, of;
    y = f_year(self);
    m = FIX2INT(f_mon(self));
    d = FIX2INT(f_mday(self));
    h = FIX2INT(f_hour(self));
    min = FIX2INT(f_min(self));
    s = FIX2INT(f_sec(self));
    if (s == 60)
        s = 59;
    sf = sec_to_ns(f_subsec(self));
    of = FIX2INT(f_utc_offset(self));
    decode_year(y, -1, &nth, &ry);
    ret = d_complex_new_internal(cDateTime,
                                 nth, 0,
                                 0, sf,
                                 of, GREGORIAN,
                                 ry, m, d,
                                 h, min, s,
                                 HAVE_CIVIL | HAVE_TIME);
    {
        get_d1(ret);
        set_sg(dat, DEFAULT_SG);
    }
    return ret;
}
          Returns a DateTime object which denotes self.
Source
# File vendor/bundle/ruby/3.4.0/gems/json-2.15.2/lib/json/add/time.rb, line 49 def to_json(*args) as_json.to_json(*args) end
Returns a JSON string representing self:
require 'json/add/time' puts Time.now.to_json
Output:
{"json_class":"Time","s":1700931678,"n":980650786}