我觉得我在这里错过了很简单的东西。我看到APIDock我希望%Z
返回缩写的时区(例如PST
)。它对Time
对象执行此操作,但不对DateTime
执行此操作。
我错过了什么?
irb(main):008:0> Time.now.strftime("%Z")
=> "PST"
irb(main):009:0> DateTime.now.strftime("%Z")
=> "-08:00"
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
答案 0 :(得分:1)
关于DateTime#strftime
的文档有点不清楚:
%Z
- 时区缩写名称或类似信息。
为了能够双向显示偏移量,DateTime
显示数值。要检索缩写名称,应明确将DateTime
对象强制转换为Time
:
▶ DateTime.now.to_time.strftime("%Z")
#⇒ "CET"
答案 1 :(得分:1)
有几件事 -
DateTime.now
为您提供DateTime类的对象。我也经历了DateTime class Doc并检查了终端中的%Z,它不起作用。
正如mudasobwa所说,通过使用to_time
方法,您将DateTime对象转换为Time类对象。
所以DateTime.now.to_time
和Time.now
都会给你同样的东西。
结论 - 我建议你使用
Time.now.strftime( “%Z”)
而不是
DateTime.now.to_time.strftime( “%Z”)