min*_*eow 81 ruby timestamp ruby-on-rails
我有一个UTC时间戳
"2010-10-25 23:48:46 UTC"
我需要将其转换为ISO 8601
"2010-10-29 06:09Z"
文档令人困惑如此 - 最简单的方法是什么?
Rya*_*igg 173
我想你是想骗我们的.
您问题的输入日期是2010年10月25日,而输出日期是2010年10月29日.打的好!
继续这个挑选线程:你的时间也完全不同,你错过了输出时间的秒数.
现在回答真实的答案.
首先是一个小小的事实:Ruby中的ISO 8601输出类似于ISO 8601维基百科页面的"组合日期和时间"输出.
你有一个字符串,所以你需要将它转换成一个Time
你可以做的对象to_time
.然后,只需调用iso8601
该对象即可获得ISO 8601版本:
"2010-10-25 23:48:46 UTC".to_time.iso8601
Run Code Online (Sandbox Code Playgroud)
这种to_time
方法是由Rails提供的,而这iso8601
是由Ruby的标准库提供的.
Ste*_*ley 21
经过大量的实验,我发现时间库的解析器比DateTime更好,虽然原因让我目前无法理解.有了这个警告,我总是使用Time而不是DateTime来处理这类东西,ruby文档也很难理解为什么会这样,
require 'time'
puts Time.parse("2010-10-25 23:48:46 UTC").iso8601
"2010-10-25T23:48:46Z"
Run Code Online (Sandbox Code Playgroud)
小智 6
注意:您必须先将时间字符串转换(解析)为时间对象,然后才能应用 to_time 方法。
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
Run Code Online (Sandbox Code Playgroud)
正确程序:
irb> ut = DateTime.parse("2010-10-25 23:48:46 UTC")
irb> ut.iso8601
=> "2010-10-25T23:48:46+00:00"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54352 次 |
最近记录: |