Ruby Date 1个月前来到String

时间:2014-11-27 12:17:43

标签: ruby date

我需要在Ruby中计算从今天起1个月的日期并将其转换为String格式:

   yyyy-dd-mmThh:MM:ss(例如2014-08-26T00:00:00)

我试过:(DateTime.now - Date.today.prev_month).to_datetime.strftime("%FT%T")但是我得到的方法不存在异常。

5 个答案:

答案 0 :(得分:5)

试试这个:

require 'date'

d = Date.today.prev_month # or Date.today.next_month, depending what you want
 => #<Date: 2014-12-27 ((2457019j,0s,0n),+0s,2299161j)> 
d.strftime("%FT%T")
 => "2014-12-27T00:00:00" 

答案 1 :(得分:2)

试试这个:

2.0.0-p247 :004 > require 'date'
 => false 
2.0.0-p247 :005 > Date.today.prev_month
 => #<Date: 2014-10-27 ((2456958j,0s,0n),+0s,2299161j)> 
2.0.0-p247 :006 > Date.today.prev_month.to_s
 => "2014-10-27" 
2.0.0-p247 :008 > Date.today.prev_month.strftime("%F%T")
 => "2014-10-2700:00:00" 
2.0.0-p247 :009 > 

答案 2 :(得分:1)

试试这个:

(DateTime.now - 1.month).strftime("%FT%T").to_s

PS:我相信这对rails很好用。请确认它是否也在ruby上独立工作?

<强>更新

正如下面的评论所指出的,只有当你有activesupport lib

时,这才有效

答案 3 :(得分:0)

2021 年更新

为了简单起见,您可以这样写:

1.month.ago.beginning_of_month.to_s

# Or

1.month.ago.end_of_month.to_s

答案 4 :(得分:0)

如果您无权访问 ActiveSupport,甚至无法访问 Date 或 DateTime,那么您可以在 30 天前使用以下内容:

(Time.now - 60*60*24*30).strftime("%FT%T")