class Time
Public Class Methods
Source
# File vendor/bundle/ruby/3.4.0/gems/json-2.10.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.10.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.10.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}