Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby String to Date Conversion

I am faced with an issue in Ruby on Rails. I am looking to convert a string of format Tue, 10 Aug 2010 01:20:19 -0400 (EDT) to a date object.

Is there anyway i could do this.

Here is what I've looked and tried at the following with no luck:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Chronic Parser
  3. Ruby: convert string to date
  4. Parsing date from text using Ruby

Please help me out with this.

like image 262
dkris Avatar asked Aug 30 '10 09:08

dkris


People also ask

How do I change the date format in Ruby?

Two steps: You need to convert your string into Date object. For that, use Date#strptime . You can use Date#strftime to convert the Date object into preferred format.

How do you parse time in Ruby?

Ruby | DateTime parse() function DateTime#parse() : parse() is a DateTime class method which parses the given representation of date and time, and creates a DateTime object. Return: given representation of date and time, and creates a DateTime object.


2 Answers

What is wrong with Date.parse method?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" date = Date.parse str => #<Date: 4910837/2,0,2299161> puts date 2010-08-10 

It seems to work.

The only problem here is time zone. If you want date in UTC time zone, then it is better to use Time object, suppose we have string:

str = "Tue, 10 Aug 2010 01:20:19 +0400" puts Date.parse str 2010-08-10 puts Date.parse(Time.parse(str).utc.to_s) 2010-08-09 

I couldn't find simpler method to convert Time to Date.

like image 98
klew Avatar answered Sep 17 '22 13:09

klew


Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z") 

Should be:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z') 
like image 26
steenslag Avatar answered Sep 18 '22 13:09

steenslag