Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby中将ISO 8601日期转换为UNIX时间戳?_Ruby On Rails_Ruby_Datetime_Time - Fatal编程技术网

Ruby on rails 如何在Ruby中将ISO 8601日期转换为UNIX时间戳?

Ruby on rails 如何在Ruby中将ISO 8601日期转换为UNIX时间戳?,ruby-on-rails,ruby,datetime,time,Ruby On Rails,Ruby,Datetime,Time,我一直在尝试Time.parse()和Date.parse(),但看不出来 我需要将格式为“2007-12-3123:59:59”的日期转换为UNIX时间戳。类似于PHP的strotime()函数的东西将是完美的。您在Ruby 1.9中有这样的功能 >> time = Time.strptime('2007-12-31 23:59:59', '%Y-%m-%d %H:%M:%S') => 2007-12-31 23:59:59 +0000 一旦有了时间对象,就可以将

我一直在尝试Time.parse()和Date.parse(),但看不出来

我需要将格式为“2007-12-3123:59:59”的日期转换为UNIX时间戳。类似于PHP的strotime()函数的东西将是完美的。

您在Ruby 1.9中有这样的功能

>> time = Time.strptime('2007-12-31 23:59:59', '%Y-%m-%d %H:%M:%S')     
=> 2007-12-31 23:59:59 +0000

一旦有了
时间
对象,就可以将其转换为多种格式。一个简单的
time.to\u i
将为您提供一个Unix时间戳。

您可以使用“date.to\u time.to\u i”将日期时间转换为Unix时间戳

以下是rails控制台上的输出:-

date=今天的日期 =>2010年9月23日星期四 日期 =>2010年9月23日星期四 date.to_time.to_i =>1285180200


谢谢,Anubhaw

您可以使用
strftime
方法

date=date.today#这将于2010年9月23日星期四返回 str_date=date.strftime(“%b%d%Y”)#这将给出2010年9月23日

请参阅此以更好地理解


这将帮助您以自定义格式转换时间。但是它在您的情况下不起作用,即将其转换为UNIX时间戳。

您给出的示例的ISO 8601时间格式是“2007-12-31T23:59:59”,而不是“2007-12-31 23:59:59”(注意数据和时间组件之间的
t

在Ruby中,如果需要
时间
库,可以解析格式正确的ISO 8601日期。如果日期中带有空格而不是
T
来分隔日期和时间,只需在将其传递到
时间之前替换它即可。iso8601

>> require 'time'
=> true
>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T'))
=> Mon Dec 31 23:59:59 -0500 2007
要将此格式的时间转换为Unix时间戳,只需使用
。\u i

>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T')).to_i
=> 1199163599

如果您需要更灵活的格式,
Time.parse
应该可以做到这一点;但是,我会小心地在生产代码中使用它,因为它可能会为格式错误或无效的输入提供意外的值,而不是引发异常。

事实证明,我所需要的只是:


parse(date\u str).to\u i

这在rails中很有效。以下是out-put-on-rails控制台>>date=date.today=>2010年9月23日星期四>>date=>2010年9月23日星期四>>date.to\u time.to\u i=>1285180200