将UTC时间转换为太平洋时间

Mo.*_*Mo. 15 ruby timezone datetime

我从外部方法得到一个带有时间和日期的字符串,所以"07/09/10 14:50"有什么方法可以将红宝石中的时间转换为"美国太平洋时间"知道它的"UTC"时间吗?有变化的日期?即如果时差导致一天不同.

Geo*_*tte 42

由于看起来您使用的是rails,因此您有很多选择.我建议阅读这篇谈论所有时区的文章.

要转换为PST,这两种方法都是特定于轨道的方法.无需重新发明轮子:

time = Time.parse("07/09/10 14:50")
time.in_time_zone("Pacific Time (US & Canada)")
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

更新:rails可能会尝试变聪明,并将您指定的时间作为字符串指定时区.要确保时间解析为UTC,您应该在字符串中指定:

time = Time.parse("07/09/10 14:50 UTC")
time.in_time_zone("Pacific Time (US & Canada)")
Run Code Online (Sandbox Code Playgroud)


mic*_*ael 14

要从字符串形式转换为您需要使用的日期或时间对象 strptime

require 'date'
require 'time'

my_time_string = "07/09/10 14:50"
to_datetime = DateTime.strptime(my_time_string, "%m/%d/%y %H:%M")    

utc_time = Time.parse(to_datetime.to_s).utc
pacific_time = utc_time + Time.zone_offset("PDT")

puts utc_time
puts pacific_time
Run Code Online (Sandbox Code Playgroud)

这是纯粹的ruby,因此可能有一些特定于rails的方法可以专门用于此任务,但这应该可以帮助您入门.