我一直在尝试使用Time.parse()和Date.parse(),但是无法弄清楚。
我需要将形式为“2007-12-31 23:59:59”的日期转换为UNIX时间戳。类似于PHP的strtotime()函数将是完美的选择。
我需要将形式为“2007-12-31 23:59:59”的日期转换为UNIX时间戳。类似于PHP的strtotime()函数将是完美的选择。
T
)。time
库,你可以解析格式正确的 ISO 8601 日期。如果你的日期使用空格而非 T
来分隔日期和时间,请在传入 Time.iso8601
之前先将其替换。>> require 'time'
=> true
>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T'))
=> Mon Dec 31 23:59:59 -0500 2007
要将这种格式的时间转换为Unix时间戳,只需使用.to_i
:
>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T')).to_i
=> 1199163599
Time.parse
应该可以胜任;但是,在生产代码中使用时要小心,因为它可能会针对格式错误或无效输入给出意外的值,而不是抛出异常。在Ruby 1.9中,您可以使用Time.strptime
来处理时间。所以在您的情况下,
>> time = Time.strptime('2007-12-31 23:59:59', '%Y-%m-%d %H:%M:%S')
=> 2007-12-31 23:59:59 +0000
Time
对象,你可以将它转换为许多格式。简单的time.to_i
将给出一个Unix时间戳。谢谢,Anubhawdate = Date.today => Thu, 23 Sep 2010 date => Thu, 23 Sep 2010 date.to_time.to_i => 1285180200
你可以使用strftime
方法
date = Date.today #这将返回Thu, 23 Sep 2010 str_date = date.strftime('%b %d %Y') # 这将给出Sep 23 2010
参考此处以获得更好的理解 blog
这将帮助您将时间转换为自定义格式。但它不适用于将其转换为UNIX时间戳的情况。
结果发现我所需要的只是:
Time.parse(date_str).to_i