我需要在Ruby中计算从今天起1个月的日期并将其转换为String
格式:
yyyy-dd-mmThh:MM:ss(例如2014-08-26T00:00:00)
我试过:(DateTime.now - Date.today.prev_month).to_datetime.strftime("%FT%T")
但是我得到的方法不存在异常。
答案 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)
为了简单起见,您可以这样写:
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")