2017-02-23 105 views
0
>> 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来初始化特定时区的任意时间?strftime%Z在时间和日期时间上的行为不同

回答

0

您可以设置一个DateTime的时区与in_time_zone:如果指定

DateTime.now.in_time_zone("Pacific Time (US & Canada)").strftime("%Z") 

Time将自动包括时区。

0

我遇到了同样的问题。这似乎是原因:

  • Time知道其时区(我们可以得出从偏移量)
  • DateTime只知道它从UTC(这可能是超过 一个时区,因为偏移菲尼克斯,亚利桑那州和加利福尼亚州旧金山是相同的,从UTC(-0700),但不同的时区(MST和PDT偏移,分别夏令时的不一致遵守)

例如,现在的两)。

相关问题