在Ruby中将UTC时间戳转换为ISO 8601

我有一个UTC时间戳

“2010-10-25 23:48:46 UTC”

我需要把它转换成ISO 8601

“2010-10-29 06:09Z”

文档混淆为地狱 – 最简单的方法是什么?

3 Solutions collect form web for “在Ruby中将UTC时间戳转换为ISO 8601”

我想你是在欺骗我们。

您的问题的inputdate是2010年10月25日 ,而产量是2010年10月29 。 打的好!

继续挑选线程:你的时间也完全不同,你错过了输出时间的秒数。

现在为真正的答案。

一个小实例首先:Ruby中的ISO 8601输出类似于ISO 8601的维基百科页面的“组合date和时间”输出。

你有一个string,所以你需要把它转换成一个Time对象,你可以用to_time做。 那么只需要在该对象上调用iso8601即可获得ISO 8601版本:

 "2010-10-25 23:48:46 UTC".to_time.iso8601 

to_time方法是由Rails提供的,而iso8601则是Ruby标准库的方法。

经过大量的实验后,我发现时间库的parsing器比DateTime更好,尽pipe现在的原因让我感到遗憾。 有了这个警告,我总是使用时间而不是date时间这种东西,ruby文件也很难说,为什么这是这样的,

 require 'time' puts Time.parse("2010-10-25 23:48:46 UTC").iso8601 "2010-10-25T23:48:46Z" 

注意:在应用to_time方法之前,必须将时间string转换(parsing)为时间对象。

 ruby-1.9.2-p180 :016 > "2010-10-25 23:48:46 UTC".to_time.iso8601 NoMethodError: undefined method `to_time' for "2010-10-25 23:48:46 UTC":String from (irb):16 

正确的程序:

 irb> ut = DateTime.parse("2010-10-25 23:48:46 UTC") irb> ut.iso8601 => "2010-10-25T23:48:46+00:00" 
  • Grails(现在)值得吗?
  • 在Ruby和/或Rails中定义自定义错误types的位置?
  • 在长时间运行的项目中重新实现Rails迁移
  • Ruby on Rails:debuggingrake任务
  • 适当的方式发送一个真实性标记与AJAX ..?
  • 在哪里定义了rake任务?
  • ActiveRecord,has_many:through和Polymorphic Associations
  • Rails 3,has_one / has_many和lambda条件
  • Redis + ActionController ::活线程不会死亡
  • Rails 2.3风格的插件和弃用警告在Heroku中运行任务
  • Chrome中的源代码仅包含一行,包括Ruby on Rails,Webpack和React JS