Last active
May 22, 2021 22:18
-
-
Save mphalliday/6121728 to your computer and use it in GitHub Desktop.
Rails timezone cheat sheet do's and don'ts, from http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails
This file contains hidden or 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
2.hours.ago # => Fri, 02 Mar 2012 20:04:47 JST +09:00 | |
1.day.from_now # => Fri, 03 Mar 2012 22:04:47 JST +09:00 | |
Date.today.to_time_in_current_zone # => Fri, 02 Mar 2012 22:04:47 JST +09:00 | |
Date.current # => Fri, 02 Mar | |
Time.zone.parse("2012-03-02 16:05:37") # => Fri, 02 Mar 2012 16:05:37 JST +09:00 | |
Time.zone.now # => Fri, 02 Mar 2012 22:04:47 JST +09:00 | |
Time.current # Same thing but shorter. (Thank you Lukas Sarnacki pointing this out.) | |
Time.zone.today # If you really can't have a Time or DateTime for some reason | |
Time.zone.now.utc.iso8601 # When supliyng an API (you can actually skip .zone here, but I find it better to always use it, than miss it when it's needed) | |
Time.strptime(time_string, '%Y-%m-%dT%H:%M:%S%z').in_time_zone(Time.zone) # If you can't use Time#parse |
This file contains hidden or 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
Time.now # => Returns system time and ignores your configured time zone. | |
Time.parse("2012-03-02 16:05:37") # => Will assume time string given is in the system's time zone. | |
Time.strptime(time_string, '%Y-%m-%dT%H:%M:%S%z') # Same problem as with Time#parse. | |
Date.today # This could be yesterday or tomorrow depending on the machine's time zone. | |
Date.today.to_time # => # Still not the configured time zone. |
Also Date.today.to_time_in_current_zone
was only supported until [email protected]
. See https://stackoverflow.com/a/22959676
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
From https://www.varvet.com/blog/working-with-time-zones-in-ruby-on-rails/
Not sure why but this gist seem to be shuffled/jumbled up, here's what's shown in the article:
DO
DONT
For example, note that in the gist,
Time.zone.today
has the comment# If you really can't have a Time or DateTime for some reason
. However in the article,Date.current
has that comment.