我需要将日期字符串转换为 Unix 时间戳格式。
我从 API 获取的字符串如下所示:
2015-05-27T07:39:59Z
with .tr()
i get:
2015-05-27 07:39:59
这是一种非常常规的日期格式。尽管如此,Ruby 无法将其转换为 Unix TS 格式。我试过.to_time.to_i
但我不断得到NoMethodError
Errors.
PHP 中的函数strtotime()
非常适合这个。
Ruby 有类似的方法吗?
您的日期字符串采用 RFC3339 格式。您可以将其解析为DateTime
对象,然后将其转换为Time
最后是 UNIX 时间戳。
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
对于更通用的方法,您可以使用DateTime.parse http://ruby-doc.org/stdlib-2.2.2/libdoc/date/rdoc/Date.html#method-c-parse代替DateTime.rfc3339 http://ruby-doc.org/stdlib-2.2.2/libdoc/date/rdoc/Date.html#method-c-rfc3339,但如果您知道格式,最好使用更具体的方法,因为它可以防止由于日期字符串中的歧义而导致的错误。如果您有自定义格式,则可以使用DateTime.strptime http://ruby-doc.org/stdlib-2.2.2/libdoc/date/rdoc/Date.html#method-c-strptime解析它
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)