Created
October 31, 2012 14:21
-
-
Save weidenfreak/3987288 to your computer and use it in GitHub Desktop.
Timecop and milliseconds
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# freezing DateTime.now | |
# | |
# in Rails | |
$ rails c | |
Loading development environment (Rails 3.2.8) | |
# DateTime and Time have milliseconds before freezing time | |
>> DateTime.now.iso8601 9 | |
=> "2012-10-29T16:28:46.534621000+01:00" | |
>> Time.now.nsec | |
=> 207961000 | |
# After freezing time, DateTime and Time both loose milliseconds | |
>> Timecop.freeze DateTime.now | |
=> 2012-10-29 16:29:12 +0100 | |
>> DateTime.now.iso8601 9 | |
=> "2012-10-29T16:29:12.000000000+01:00" | |
>> Time.now.nsec | |
=> 0 | |
# in plain Ruby | |
$ irb | |
>> require 'date' | |
=> true | |
>> require 'timecop' | |
=> true | |
# DateTime and Time have milliseconds before freezing time | |
>> DateTime.now | |
=> #<DateTime: 2012-10-29T16:28:18+01:00 ((2456230j,55698s,544205000n),+3600s,2299161j)> | |
>> Time.now.nsec | |
=> 211554000 | |
# After freezing time, only Time looses milliseconds | |
>> Timecop.freeze DateTime.now | |
=> 2012-10-29 16:29:25 +0100 | |
>> DateTime.now | |
=> #<DateTime: 2012-10-29T16:29:25+01:00 ((2456230j,55765s,0n),+3600s,2299161j)> | |
>> Time.now.nsec | |
=> 0 | |
# | |
# freezing Time.now | |
# | |
# in Rails | |
$ rails c | |
Loading development environment (Rails 3.2.8) | |
# After freezing time, only DateTime looses milliseconds | |
>> Timecop.freeze Time.now | |
=> 2012-10-29 16:39:27 +0100 | |
>> Time.now.nsec | |
=> 459204000 | |
>> DateTime.now.iso8601 9 | |
=> "2012-10-29T16:39:27.000000000+01:00" | |
# in plain Ruby | |
$ irb | |
>> require 'date' | |
=> true | |
>> require 'timecop' | |
=> true | |
# After freezing time, neither Time nor DateTime looses milliseconds | |
>> Timecop.freeze Time.now | |
=> 2012-10-29 16:39:10 +0100 | |
>> Time.now.nsec | |
=> 325934171 | |
>> DateTime.now.iso8601 9 | |
=> "2012-10-29T16:40:38.188632000+01:00" | |
# | |
# that leads to some confusion... | |
# if you freeze Time | |
# | |
$ rails c | |
Loading development environment (Rails 3.2.8) | |
>> Timecop.freeze Time.now | |
=> 2012-10-29 18:37:03 +0100 | |
>> time = Time.now | |
=> 2012-10-29 18:37:03 +0100 | |
>> datetime = DateTime.now | |
=> Mon, 29 Oct 2012 18:37:03 +0100 | |
>> time == datetime | |
=> false | |
>> Timecop.return | |
=> 2012-10-29 18:37:57 +0100 | |
>> Timecop.freeze DateTime.now | |
=> 2012-10-29 18:38:19 +0100 | |
>> time = Time.now | |
=> 2012-10-29 18:38:19 +0100 | |
>> datetime = DateTime.now | |
=> Mon, 29 Oct 2012 18:38:19 +0100 | |
>> time == datetime | |
=> true | |
>> time.eql? datetime | |
=> false | |
>> time.class | |
=> Time | |
>> datetime.class | |
=> DateTime |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment