Eduardo
Eduardo

Reputation: 7141

Ruby Date 1 month ago to String

I need to calculate the date 1 month from today in Ruby and convert it to a String in the format:

yyyy-dd-mmThh:MM:ss (e.g. 2014-08-26T00:00:00)

I have tried: (DateTime.now - Date.today.prev_month).to_datetime.strftime("%FT%T") but I get a method does not exist exception.

Upvotes: 9

Views: 10772

Answers (5)

Croata
Croata

Reputation: 1

If you don't have access to ActiveSupport, or even Date, nor DateTime, then you can use something like this for 30 days ago:

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

Upvotes: 0

Shannarra
Shannarra

Reputation: 559

UPDATE 2021

You can write this, for simplicity:

1.month.ago.beginning_of_month.to_s

# Or

1.month.ago.end_of_month.to_s

Upvotes: 0

dax
dax

Reputation: 10997

Try this:

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" 

Upvotes: 7

Michael Durrant
Michael Durrant

Reputation: 96474

Try this:

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 > 

Upvotes: 2

shivam
shivam

Reputation: 16506

Try this:

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

PS: I am sure this works fine with rails. Please confirm if it works independently on ruby too?

UPDATE:

As pointed out on comment below, this will work only if you have activesupport lib

Upvotes: 1

Related Questions