【发布时间】:2019-01-02 16:17:51
【问题描述】:
我有这个日期
date = Mon, 15 Aug 2016 13:00:00 UTC +00:00
这是ActiveSupport::TimeWithZone类
然后,我需要获取“斐济”时区的时间
start_in_time_zone = date.in_time_zone("Fiji")
这将返回Tue, 16 Aug 2016 01:00:00 +12 +12:00
然后,我需要用时区名称显示日期,所以
time_zone_abbr = start_in_time_zone.strftime("%Z")
它应该返回"FJT"
但返回"+12"
知道为什么吗?
我正在使用ruby 2.3.7 和rails 4.2.7
更新
如果我这样做
start_in_time_zone = date.in_time_zone("Madrid")
它返回
"CEST"
更新 2
我尝试通过设置不同的时间来查看问题出在哪里。
date=Time.utc(2018, 07, 25, 20, 30, 45)
date.class #=> Time
date.in_time_zone("Madrid") #=> Wed, 25 Jul 2018 22:30:45 CEST +02:00
date.in_time_zone("Fiji") #=> Thu, 26 Jul 2018 08:30:45 +12 +12:00
date.in_time_zone("EST") #=> Wed, 25 Jul 2018 15:30:45 EST -05:00
【问题讨论】:
-
旁注:在 Ruby 中的任何日期/时间类上都没有定义
in_time_zone方法。 -
我已经更新了我的问题。日期是 ActiveSupport::TimeWithZone 类
-
你可能应该更新标签,ruby 中没有这样的类
ActiveSupport::TimeWithZone。 -
对。现在就完成了。
-
你的操作系统是什么?
标签: ruby-on-rails ruby timezone