我有这个约会
Locator.CurrentMutable.Register(() => new MyView(), typeof(IViewFor<MyViewModel>));
var ViewModel = (MyViewModel)Locator.CurrentMutable.GetService(typeof(MyViewModel));
这是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")
更新2
我试图通过设置不同的时间来查看问题出在哪里。
"CEST"
答案 0 :(得分:2)
可悲的是,在Rails使用的时区数据中似乎没有为“斐济”分配“ FJT”的缩写。另外,对于这些缩写的支持在太平洋时区似乎是零星的。
irb(main):002:0> DateTime.now.in_time_zone('Samoa').strftime('%Z')
=> "+13"
irb(main):003:0> DateTime.now.in_time_zone('Midway Island').strftime('%Z')
=> "SST"
irb(main):004:0> DateTime.now.in_time_zone('Samoa').strftime('%Z')
=> "+13"
irb(main):005:0> DateTime.now.in_time_zone('Tokelau Is.').strftime('%Z')
=> "+13"
irb(main):006:0> DateTime.now.in_time_zone('Wellington').strftime('%Z')
=> "NZST"
UTC偏移显示为后备。如果有帮助,请记住可以使用.time_zone.tzinfo
对象上的ActiveSupport::TimeWithZone
检索全名和其他信息。 TZInfo::Country
可以识别“ FJ”代码。
irb(main):056:0> TZInfo::Country.get('FJ')
=> #<TZInfo::Country: FJ>
irb(main):057:0> TZInfo::Country.get('FJ').zone_info
=> [#<TZInfo::CountryTimezone: Pacific/Fiji>]