2013-10-05 76 views
2

Time.now.strftime('%Z')爲我返回'Mountain Daylight Time'。我想獲得MDT。如何從Time.now獲取時區縮寫?

什麼是獲取時區縮寫的正確方法?

萬一有人懷疑我是誤導他們:

irb(main):001:0> Time.now.strftime('%Z') 
=> "Mountain Daylight Time" 
irb(main):002:0> Time.now.zone 
=> "Mountain Daylight Time" 
irb(main):003:0> Time.now.in_time_zone('Mountain Time (US & Canada)').zone 
=> "MDT" 
+1

真的嗎?當使用'Time.now.strftime('%Z')'時,我得到'CEST' - 即縮寫和[docs](http://www.ruby-doc.org/core-2.0.0/Time .html#method-i-strftime)說: '%Z - 簡稱時區名稱或類似信息。「# – dax

+0

是時間#strftime猴子在代碼中修補或使用的其中一個寶石? – Nishu

+0

有沒有什麼辦法可以列出一個特定的方法是「猴子補丁」? – chrisp

回答

0

跑了幾件事情,我會說嘗試使用Time.now.zone

#This is working for me, but not for you. I'm not sure why (although others might!) 
$ > Time.now.strftime('%Z') 
=> "CEST" 

#This gives UTC time which is useful, but not what you're after 
$ > Time.zone 
=> #<ActiveSupport::TimeZone:0x00000103049918 @name="UTC", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Etc/UTC>, @current_period=nil> 
$ > Time.zone.now 
=> Sat, 05 Oct 2013 09:11:01 UTC +00:00 
$ > Time.zone.now.zone 
=> "UTC" 

#This will (perhaps) return what you want. 
#It's possible that you'll still just get "Mountain Daylight Time" 
$ > Time.now 
=> 2013-10-05 11:12:09 +0200 
$ > Time.now.zone 
=> "CEST"