diff --git a/ruby/lib/google/protobuf/well_known_types.rb b/ruby/lib/google/protobuf/well_known_types.rb index 37f8d5b675cd..c9a9ab145545 100755 --- a/ruby/lib/google/protobuf/well_known_types.rb +++ b/ruby/lib/google/protobuf/well_known_types.rb @@ -85,6 +85,11 @@ def to_time def from_time(time) self.seconds = time.to_i self.nanos = time.nsec + self + end + + def self.from_time(time) + new.from_time(time) end def to_i diff --git a/ruby/tests/well_known_types_test.rb b/ruby/tests/well_known_types_test.rb index ea042eb02441..c069764167fc 100755 --- a/ruby/tests/well_known_types_test.rb +++ b/ruby/tests/well_known_types_test.rb @@ -15,16 +15,20 @@ def test_timestamp # millisecond accuracy time = Time.at(123456, 654321) - ts.from_time(time) + ts = Google::Protobuf::Timestamp.from_time(time) assert_equal 123456, ts.seconds assert_equal 654321000, ts.nanos assert_equal time, ts.to_time # nanosecond accuracy time = Time.at(123456, Rational(654321321, 1000)) - ts.from_time(time) + ts = Google::Protobuf::Timestamp.from_time(time) assert_equal 654321321, ts.nanos assert_equal time, ts.to_time + + # Instance method returns the same value as class method + assert_equal Google::Protobuf::Timestamp.new.from_time(time), + Google::Protobuf::Timestamp.from_time(time) end def test_duration