72 votos

Ruby cadena de conversión de fecha

Me enfrento con un problema en Ruby on Rails. Estoy buscando para convertir una cadena de formato Tue, 10 Aug 2010 01:20:19 -0400 (EDT) a un objeto date.

Existe de todos modos yo podría hacer esto.

Aquí es lo que he mirado y probado en los siguientes no hubo suerte:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Crónica Del Analizador
  3. Ruby: convertir la cadena a la fecha
  4. El análisis de la fecha de texto usando Ruby

Por favor, ayúdame con esto.

134voto

klew Puntos 9437

¿Lo que está mal con Date.parse método?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10

Parece que funciona.

El único problema aquí es la zona horaria. Si desea fecha en zona de tiempo UTC, entonces es mejor usar Time objeto, supongamos que tenemos la cadena:

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09

No pude encontrar el método más simple para convertir Time a Date .

14voto

steenslag Puntos 29662
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

Debe ser:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X