Last active
January 3, 2020 17:10
Ruby convert UTC to local time zone
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
require 'Time' | |
utc_time_str = '2020-01-02T18:16:35+0000' | |
# Outputs UTC time. | |
Time.parse(utc_time_str) | |
=> 2020-01-02 18:16:35 +0000 | |
# Outputs system timezone. Also can use to_time | |
Time.parse(utc_time_str).to_localtime | |
=> 2020-01-02 13:16:35 -0500 | |
# With ActiveSupport you can set the current threads time zone. | |
# This is how RoR handles setting time zones on web requests. | |
require 'active_support/all' | |
# Start with a UTC time (say from an SQL query. | |
# NOTE: No time zone info in string. | |
utc_time_str = '2020-1-2 18:16:35' | |
# Parse time from SQL query declaring as UTC TZ. | |
utc_time = Time.find_zone('UTC').parse(utc_time_str) | |
=> Thu, 02 Jan 2020 18:16:35 UTC +00:00 | |
# Set the timezone to convert to. This is done in the request in RoR. | |
Time.zone = 'Central Time (US & Canada)' | |
Time.zone.parse(utc_time.to_s) | |
=> Thu, 02 Jan 2020 12:16:35 CST -06:00 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment