2010-08-30 39 views

Respuesta

103

¿Qué ocurre con el método Date.parse?

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 que la fecha de la zona horaria UTC, entonces es mejor usar Time objeto, supongamos que tenemos 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 método más simple para convertir Time a Date.

+0

Gracias Klew y Ryan. Funcionó como por arte de magia. Estaba al tanto de Date.parse, pero no lo había usado. Esto es un aprendizaje para mí – dkris

+1

Ruby 1.9 tiene Time # to_date para convertir la hora a la fecha. – steenslag

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

debe ser:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z') 
5
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)" 
str.to_date 
=> Tue, 10 Aug 2010 
+1

Esto es una cosa de Rails, no es una cosa de Ruby. Creo que –

+0

Sí, sólo raíles http://apidock.com/rails/String/to_date –

1

Usted puede intentar https://rubygems.org/gems/dates_from_string: Fecha

Buscar de estructura:

text = "get car from repair 2015-02-02 23:00:10" 
dates_from_string = DatesFromString.new 
dates_from_string.find_date(text) 

=> ["2015-02-02 23:00:10"]