Permalink
Browse files

Preserve fractional seconds in DateTime#to_time

Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
  • Loading branch information...
1 parent c1c6f29 commit bf0395837fc735bf98daed23f475b267e48c1118 John Firebaugh committed with spastorino Jan 6, 2011
@@ -66,7 +66,7 @@ def to_date
# Attempts to convert self to a Ruby Time object; returns self if out of range of Ruby Time class
# If self has an offset other than 0, self will just be returned unaltered, since there's no clean way to map it to a Time
def to_time
- self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec) : self
+ self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec, sec_fraction * (RUBY_VERSION < '1.9' ? 86400000000 : 1000000)) : self
end
# To be able to keep Times, Dates and DateTimes interchangeable on conversions
@@ -38,6 +38,8 @@ def test_to_time
assert_equal Time.utc_time(2039, 2, 21, 10, 11, 12), DateTime.new(2039, 2, 21, 10, 11, 12, 0, 0).to_time
# DateTimes with offsets other than 0 are returned unaltered
assert_equal DateTime.new(2005, 2, 21, 10, 11, 12, Rational(-5, 24)), DateTime.new(2005, 2, 21, 10, 11, 12, Rational(-5, 24)).to_time
+ # Fractional seconds are preserved
+ assert_equal Time.utc(2005, 2, 21, 10, 11, 12, 256), DateTime.new(2005, 2, 21, 10, 11, 12 + Rational(256, 1000000), 0).to_time
end
def test_civil_from_format

1 comment on commit bf03958

i don't get it, why do you override DateTime#to_time?

 DateTime.now => #<DateTime: 2012-01-25T11:33:21+01:00 ((2455952j,38001s,996469000n),+3600s,2299161j)>  
 DateTime.now.to_time => 2012-01-25 11:33:25 +0100 

looks like offsets are allright?

ruby 1.9.3p0

Please sign in to comment.