ruby on rails - Conversione del timestamp UTC in ISO 8601 in Ruby




ruby-on-rails (2)

Ho un timestamp in UTC

"2010-10-25 23:48:46 UTC"

Devo convertirlo in ISO 8601

"2010-10-29 06: 09Z"

La documentazione è confusa da morire - qual è il modo più semplice per farlo?


Dopo molti esperimenti, trovo che il parser della libreria Time sia migliore di DateTime, anche se le ragioni mi sfuggono al momento. Con questo avvertimento, uso sempre il Tempo piuttosto che il DateTime per questo genere di cose, e la documentazione ruby ​​è anche difficile da convincere sul motivo per cui è così,

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

Nota: è necessario convertire (analizzare) una stringa temporale in un oggetto orario prima di poter applicare il metodo 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

Procedura corretta:

irb> ut = DateTime.parse("2010-10-25 23:48:46 UTC")

irb> ut.iso8601
 => "2010-10-25T23:48:46+00:00" 




timestamp