Home » Ruby » convert String to DateTime

convert String to DateTime

Posted by: admin November 30, 2017 Leave a comment

Questions:

I need to parse following String into a DateTime Object:
30/Nov/2009:16:29:30 +0100

Is there an easy way to do this?

PS: I want to convert the string above as is. The colon after the year is not a typo. I also want to solve the problem with Ruby and not RoR.

Answers:

DateTime.strptime allows you to specify the format and convert a String to a DateTime.

Questions:
Answers:

Shouldn’t this also work?

"30/Nov/2009 16:29:30 +0100".to_datetime

Questions:
Answers:

I have had success with:

require 'time'
t = Time.parse(some_string)

Questions:
Answers:

I used Time.parse("02/07/1988"), like some of the other posters.

An interesting gotcha was that Time was loaded by default when I opened up IRB, but Time.parse was not defined. I had to require 'time' to get it to work.

That’s with Ruby 2.2.

Questions:
Answers:

This will convert the string in date to datetime:

"05/05/2012".to_time

Questions:
Answers:

in Ruby 1.8, the ParseDate module will convert this and many other date/time formats. However, it does not deal gracefully with the colon between the year and the hour. Assuming that colon is a typo and is actually a space, then:

#!/usr/bin/ruby1.8

require 'parsedate'

s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s))    # =>  Mon Nov 30 16:29:30 -0700 2009

Questions:
Answers:

For chinese Rails developers:

DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000