Ruby - Convert formatted date to timestamp
Solution 1
Your date string is in RFC3339 format. You can parse it into a DateTime
object, then convert it to Time
and finally to a UNIX timestamp.
require 'date'
DateTime.rfc3339('2015-05-27T07:39:59Z')
#=> #<DateTime: 2015-05-27T07:39:59+00:00 ((2457170j,27599s,0n),+0s,2299161j)>
DateTime.rfc3339('2015-05-27T07:39:59Z').to_time
#=> 2015-05-27 09:39:59 +0200
DateTime.rfc3339('2015-05-27T07:39:59Z').to_time.to_i
#=> 1432712399
For a more general approach, you can use DateTime.parse
instead of DateTime.rfc3339
, but it is better to use the more specific method if you know the format, because it prevents errors due to ambiguities in the date string. If you have a custom format, you can use DateTime.strptime
to parse it
Solution 2
In rails 4, you can use like - string.to_datetime.to_i
"Thu, 26 May 2016 11:46:31 +0000".to_datetime.to_i
Solution 3
require 'time'
str = "2015-05-27T07:39:59Z"
Time.parse(str).to_i # => 1432712399
Or, using Rails:
str.to_time.to_i
Related videos on Youtube
romanzipp
Updated on June 04, 2022Comments
-
romanzipp almost 2 years
I need to convert a date string to the Unix timestamp format. The string I get from an API looks like:
2015-05-27T07:39:59Z
with
.tr()
i get:2015-05-27 07:39:59
which is a pretty regular date format. Nonetheless, Ruby isn't able to convert it to Unix TS format. I tried
.to_time.to_i
but I keep gettingNoMethodError
Errors.In PHP the function
strtotime()
just works perfectly for this. Is there some similar method for Ruby?-
lcguida almost 9 yearsDoes this help? ruby-doc.org/core-2.2.0/Time.html#method-i-strftime
-