2009-10-26 73 views
16

隨着紅寶石我想格式日期爲:2009-10-01獲得當月第一天的最有效方法是什麼?

我在哪裏取當前日期(2009-10-26),然後將當天更改爲「01」。

我知道如何做到這一點,但很奇怪最簡單的方法是什麼,代碼明智的方法來解決這個問題。

回答

25
Time.parse("2009-10-26").strftime("%Y-%m-01") 
+4

這只是一個例子...任何變量都可以替換該字符串.. – Starkers 2014-02-13 06:18:03

+0

謝謝...從未來寫作,這對我很有幫助=) – 2015-08-06 16:25:14

10
require 'date'  
now = Date.today 
Date.new(now.year, now.month, 1) 
+2

請注意不加引號的整數中的前導零:這是八進制符號。它會正常工作,直到你鍵入08或09. – jes5199 2009-10-26 22:46:45

+0

修復了現在和當天的問題。 謝謝! – CodeJoust 2009-10-27 04:59:11

+0

+1這個答案不需要active_support – ksiomelo 2014-06-24 13:04:16

0

這工作...

並不十分巧妙:/

require 'date' 
Date.parse(Date.parse("2009-10-26").to_s[0,8] << "01") 
55

如果你不介意的話,包括在的ActiveSupport您的應用程序,你可以簡單地這樣做:

require 'active_support' 
date = Date.today.beginning_of_month 
+0

我得到'require':無法加載這樣的文件 - activesupport(LoadError)'。 – JoaoHornburg 2013-08-04 15:32:08

+1

需要'active_support' – avguchenko 2013-10-18 00:28:35

+0

感謝這個開頭的月份技巧 – franchez 2014-04-24 08:21:37

0
require 'active_support/core_ext' 
Date.today.beginning_of_month 
+0

這將返回一年中的第一天,而不是本月。 – 2013-08-14 15:57:03

1

如果您需要在不的ActiveSupport Date對象,你可以回到最後一個月的最後一天,和1

Date.today - Date.today.mday + 1 
+1

我想你應該改爲 'Date.today - Date.today.mday + 1' – ishan 2015-12-17 06:59:59

0

最有效的獲得開始,當月的最後一天

@date = DateTime.now 
@date.beginning_of_month 
@date.end_of_month 
相關問題