首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby的strftime不显示时区偏移量(带有'%Z‘)

Ruby的strftime不显示时区偏移量(带有'%Z‘)
EN

Stack Overflow用户
提问于 2015-02-03 06:12:26
回答 1查看 3.2K关注 0票数 5

我有以下Time对象:

[8] pry(#<#<Class:0x007f928f12f560>>)> display_num
=> 2015-02-19 09:00:00 -0600
[9] pry(#<#<Class:0x007f928f12f560>>)> display_num.is_a?(Time)
=> true
[10] pry(#<#<Class:0x007f928f12f560>>)> display_num.is_a?(DateTime)
=> false
[11] pry(#<#<Class:0x007f928f12f560>>)> display_num.strftime("%l:%M%P %Z")
=> " 9:00am "
[12] pry(#<#<Class:0x007f928f12f560>>)> display_num.strftime("%l:%M%P %z")
=> " 9:00am -0600"

我完全被难住了:

[16] pry(#<#<Class:0x007f928f12f560>>)> Time.new
=> 2015-02-02 14:09:13 -0800
[17] pry(#<#<Class:0x007f928f12f560>>)> t = Time.new
=> 2015-02-02 14:09:25 -0800
[18] pry(#<#<Class:0x007f928f12f560>>)> t.strftime("%l:%M%P %Z")
=> " 2:09pm PST"

工作得很好。

上面的代码块中发生了什么事情,使得时区无法以人类可读的格式显示?

EN

回答 1

Stack Overflow用户

发布于 2018-06-19 04:28:06

值得一提的是,如果您使用的是Rails,那么您可以使用in_time_zone方法中的ActiveSupport猴子补丁来修复strftime中的这个问题

Time.current.localtime("-06:00").strftime("TZ is: %Z") # => "TZ is: "
Time.current.in_time_zone("America/Chicago").strftime("TZ is: %Z") # => "TZ is: CDT"
Time.current.in_time_zone("America/New_York").strftime("TZ is: %Z") # => "TZ is: EDT"

参考文献:

DateAndTime::Zones#in_time_zone

时区字符串的完整列表在ActiveSupport::TimeZone::MAPPING中定义

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28287774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档