UTCのタイムスタンプがあります
「2010-10-25 23:48:46 UTC」
ISO 8601に変換する必要があります
「2010-10-29 06:09Z」
ドキュメントは地獄として混乱しています-それを行う最も簡単な方法は何ですか?
あなたは私たちをだまそうとしていると思います。
質問への入力日は2010年10月25日です、出力は29日2010年10月。よくやった!
この短い選択スレッドを続けます。時間も完全に異なり、出力時間から秒が抜けています。
本当の答えになりました。
ただし、最初に少しファクトイド:RubyのISO 8601出力は ISO 8601のWikipediaページ からの「日付と時刻の組み合わせ」出力に似ています。
文字列があるので、それをto_time
で実行できるTime
オブジェクトに変換する必要があります。次に、そのオブジェクトでiso8601
を呼び出してISO 8601バージョンを取得するだけです。
"2010-10-25 23:48:46 UTC".to_time.iso8601
to_time
メソッドはRailsの好意によるものであり、iso8601
メソッドはRubyの標準ライブラリの好意によるものです。
多くの実験を行った結果、TimeライブラリのパーサーはDateTimeよりも優れていることがわかりましたが、現時点では理由がわかりません。その警告で、私はこの種のものには常にDateTimeではなくTimeを使用し、Rubyドキュメントはこれがそうである理由について理解するのも難しいです、
require 'time'
puts Time.parse("2010-10-25 23:48:46 UTC").iso8601
"2010-10-25T23:48:46Z"
注: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
正しい手順:
irb> ut = DateTime.parse("2010-10-25 23:48:46 UTC")
irb> ut.iso8601
=> "2010-10-25T23:48:46+00:00"