2010-11-11 9 views
7

Ho un oggetto DateTime in Rails quali uscite in questo modo quando viene chiamato:Come si converte un oggetto DateTime di Rails in una stringa XML?

ruby-1.8.7-p302 > Time.now 
=> Wed Nov 10 16:46:51 -0800 2010 

Come faccio a convertire il DateObject per restituire un tipo stringa datetime XML come questo:

ruby-1.8.7-p302 > Time.now.convert_to_xml 
=> 2010-11-10T16:46:51-08:00 

risposta

25

Tempo di formato XML:

Time.now.xmlschema # implemented by Rails, not stock ruby 
Time.now.strftime '%Y-%m-%dT%H:%M:%S%z' 

http://corelib.rubyonrails.org/classes/Time.html#M000281

Per analizzare (Ruby 1.9 e oltre):

t = Time.now.xmlschema(str) 

http://ruby-doc.org/core-1.9/classes/Time.html#M000329

+0

Sembra che anche Time.now.xmlschema funzioni in Ruby 1.8.7. Grazie! – Chanpory

+0

@GeekActive, non dimenticare di contrassegnare questa risposta come ** Accettato **. =) – John

+0

Sembra che "Time.xmlschema' sia implementato come estensione della classe" Tempo "da Rails. Non è in magazzino Ruby. Ho aggiornato la risposta. –

0

Utilizzare il metodo strftime

Time.now.strftime("your format string") 
+0

to_s non si converte in xml. Ho appena ottenuto la stessa risposta di "Time.now" ma tra virgolette "" Wed Nov 10 16:46:51 -0800 2010 "" – Chanpory

+0

Sì, ho saltato la pistola perché ho letto una stringa. – rwilliams

+0

Il mio errore nel titolo, l'ho appena modificato – Chanpory

5

Prova Time.now.iso8601

+0

Anche questa è una bella risposta concisa! – Chanpory

+0

"xs: dateTime, che è incorporato nella W3C XML Schema Data types specifica [Schema2], e DEVE essere espresso in formato UTC, senza componente timezone." – Chloe

1

Ecco un modo puro-Rubino:

Time.now.strftime("%Y-%m-%dT%H:%M:%S%z") 

È possibile ottenere ulteriori informazioni sulle varie opzioni strftime con:

ri Time.strftime 
Problemi correlati