2010-11-11 33 views
7

Tengo un objeto DateTime en los carriles que da salida como esto cuando se le llama:¿Cómo convierto un objeto Rails DateTime en una cadena XML?

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

¿Cómo convierto el DateObject para devolver un tipo cadena de fecha y hora XML como esto:

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

Respuesta

25

hora de 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

Para analizar (Ruby 1.9 y más allá):

t = Time.now.xmlschema(str) 

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

+0

Parece que Time.now.xmlschema también funciona en Ruby 1.8.7. ¡Gracias! – Chanpory

+0

@GeekActive, no olvide marcar esta respuesta como ** Aceptada **. =) – John

+0

Parece que '' Time.xmlschema' se implementa como una extensión de la clase 'Time' de Rails. No está en stock Ruby. Actualicé la respuesta. –

0

Utilice el método strftime

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

to_s no convierte a XML. Acabo de recibir la misma respuesta que 'Time.now' pero entre comillas' "Mié. 10 de noviembre 16:46:51 -0800 2010" ' – Chanpory

+0

Sí, salté el arma porque leía el hilo. – rwilliams

+0

Mi error en el título, acaba de editarlo – Chanpory

5

Trate Time.now.iso8601

+0

¡Esta es una respuesta muy breve! – Chanpory

+0

"xs: dateTime, que está integrado en los tipos de datos del esquema XML W3C especificación [Schema2], y DEBE expresarse en formato UTC, sin componente de zona horaria." – Chloe

1

Aquí está una manera pura-Rubí:

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

usted puede obtener más detalles acerca de las diversas opciones de strftime con:

ri Time.strftime 
Cuestiones relacionadas