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

时间:2010-07-09 15:19:31

标签: ruby datetime timezone

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

3 个答案:

答案 0 :(得分:40)

由于看起来您使用的是rails,因此您有很多选择。我建议阅读所有关于时区的this article

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

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

希望这有帮助

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

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

答案 1 :(得分: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

这是纯粹的ruby,因此可能有一些特定于rails的方法可以专门用于此任务,但这应该可以让你开始。

答案 2 :(得分:-5)

要求'时间'

如果你想太平洋时间从Time.new减去25200秒太平洋时间和GMT之间有7小时的差异。

t = Time.parse((Time.new-25200).to_s)

然后使用strftime进行格式设置,但希望它看起来。

将t.strftime(“%A%D置于%I:%M%p”)