2017-02-18 66 views
0

我覺得我在這裏錯過了一些非常簡單的東西。我讀了APIDock,預計%Z會返回縮短的時區(例如,)。它爲Time對象執行此操作,但不是DateTime對於時區縮寫,DateTime.strftime和Time.strftime的輸出不同

我錯過了什麼?

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]

回答

1

DateTime#strftime有點不清楚的文檔:

%Z - 時區縮寫名稱或者類似的信息。

爲了使雙向顯示偏移成爲可能,DateTime顯示數值。要檢索的簡稱,是一個應該明確地投DateTime對象Time

▶ DateTime.now.to_time.strftime("%Z") 
#⇒ "CET" 
+0

謝謝 - 我不確定這是文檔問題還是功能是起訴。我打開了一張票:https://bugs.ruby-lang.org/issues/13231 – thornomad

+0

老實說:我非常確定它是故意完成的,_to使它能夠顯示偏移兩種方式_無需添加額外的'%' - 映射器。 – mudasobwa

1

有幾件事情 -

DateTime.now

給你D​​ateTime類的對象。此外,我已經通過DateTime class Doc並在終端中檢查了%Z,它不起作用。

And as mudasobwa said,using to_time method that you are Converting DateTime object to Time class object。

所以DateTime.now.to_timeTime.now都給你同樣的事情。

結論 - 我會建議你使用

Time.now.strftime( 「%Z」)

,而不是

DateTime.now.to_time.strftime (「%Z」)

相關問題