我在Rails 3中将UTC Time
或TimeWithZone
转换为本地时间时遇到问题。
说moment
是UTC中的一些Time
变量(例如moment = Time.now.utc
)。如何在照顾DST的情况下(即使用EST / EDT)将moment
转换为我的时区?
更准确地说,如果时间与美国东部时间今天上午9点相对应,我想打印“3月14日星期一,上午9点”,如果时间与上周一美国东部时间上午9点相对应,请打印“3月7日,星期一上午9点”。
希望有另一种方式?
编辑:I first thought“EDT”应该是公认的时区,但“EDT”不是实际的时区,更像是时区的状态。例如,要求Time.utc(2011,1,1).in_time_zone("EDT")
没有任何意义。这有点令人困惑,因为“EST” 是实际时区,在一些不使用夏令时且使用(UTC-5)的地方使用。
最佳答案
Rails有其自己的名称。看到他们与:
rake time:zones:us
您还可以在所有时区运行
rake time:zones:all
。要查看更多与区域相关的 rake 任务:
rake -D time
因此,要转换为EST,自动适应DST:
Time.now.in_time_zone("Eastern Time (US & Canada)")