2010-04-07 108 views
0

我使用這一行來獲取每月第一天的開始時間。strftime(小時)顯示錯誤時間?

t = Time.now.to_date.beginning_of_month.beginning_of_day 

當我顯示此使用t.strftime("%A %b %e @ %l:%m %p")

它表明:

Monday Feb 1 @ 12:02 AM 

小時是始終12(而不是00),並且更奇怪的微小改變到整數月匹配。對於二月份的日期,它顯示12:02 AM 我使用.prior_month.next_month上的變量向前或向後移動。 所以當我移動到6月,這將顯示爲

Tuesday June 1 @ 12:06 AM 

但是,當我使用直t.to_s只是顯示的t的價值,我得到這個時間是00:00:00,這是我所期望的:

Mon Feb 01 00:00:00 -0700 2010 

發生類似的錯誤使用end_of_day,但時間總是11點 和分是在整數匹配一個月相同的整數值,即 的時間是11:06】首相在6月11日, :二月下午2點。

古怪? 不可否認的是Rails的noob。

感謝您的任何意見或解釋。

回答

2

%m是一年中的月份。您需要%M,如t.strftime("%A %b %e @ %l:%M %p")

end_of_day問題很有道理,因爲結束的時間是11:59。

+0

* 11:59 *也是* Blondie *的優秀歌曲,感謝這篇文章,它開始在我的腦海中彈奏。 – Arkku 2010-04-07 18:39:18

0

如果我們在此討論PHP日期格式化語法,則%I是指以12小時格式表示的小時的兩位數表示,即01至12。如果您想要24小時制,請改爲使用%H

%m是個月,而%M是分鐘。

請參閱PHP文檔here

編輯:

我傻了,以爲你是因爲該函數的名稱談論PHP。幸運的是,Ruby中的語法看起來基本相同,正如您從j。的答案中看到的。

+0

@Syntactic,他說他在使用Ruby on Rails。 – 2010-04-07 17:49:53

+0

哎呀,錯過了。我回答時沒有紅寶石標籤。 – Syntactic 2010-04-07 19:00:35

0

我相信這是你想要什麼:

t = Time.now.to_date.beginning_of_month.beginning_of_day 
t.strftime("%A %b %e @ %H:%M %p") 

你可以找到更多信息關於time格式化here