Skip to content

Instantly share code, notes, and snippets.

@billyyarosh
Last active January 3, 2020 17:10
Show Gist options
  • Save billyyarosh/5d4e163d0e534c09661b42309e39981c to your computer and use it in GitHub Desktop.
Save billyyarosh/5d4e163d0e534c09661b42309e39981c to your computer and use it in GitHub Desktop.
Ruby convert UTC to local time zone
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