>> Time.now.strftime("%Z")
=> "CST"
>> DateTime.now.strftime("%Z")
=> "+08:00"
>> DateTime.new(2017, 2, 1, 17, 30, 0, "PST").strftime("%Z")
=> "-08:00"
所以我想打印出时区名称,以便我到达strftime
。但是,如果我给它一个DateTime,它的行为会有所不同。为什么会这样?这是否意味着我无法使用DateTime.new来初始化特定时区的任意时间?
答案 0 :(得分:0)
您可以使用DateTime
设置in_time_zone
的时区:
DateTime.now.in_time_zone("Pacific Time (US & Canada)").strftime("%Z")
如果指定, Time
将自动包含时区。
答案 1 :(得分:0)
我遇到了同样的问题。这似乎是原因:
Time
知道它的时区(我们可以从中得出偏移量)DateTime
只知道它与UTC的偏差(可能超过
一个时区,因为不遵守夏令时)例如,目前凤凰城,亚利桑那州和加利福尼亚州旧金山都与UTC(-0700)的偏差相同,但时区不同(分别为MST和PDT)。