2011-06-02 14 views
8

Tengo una cadena como "2011-06-02T23: 59: 59 + 05: 30".Ruby - cadena de conversión a la fecha

Quiero convertirlo a formato de fecha y necesito analizar solo la fecha, "2011-06-02".

+1

Esto ha sido preguntado y respondido en numerosas ocasiones. Sugiero cerrar como duplicado. http://stackoverflow.com/questions/2720907/ruby-convert-string-to-date –

+0

posible duplicado de [Ruby String to Date Conversion] (http://stackoverflow.com/questions/3599239/ruby-string-to -date-conversion) – DGM

Respuesta

24

para Ruby 1.9.2:

require 'date' # If not already required. If in Rails then you don't need this line). 
puts DateTime.parse("2011-06-02T23:59:59+05:30").to_date.to_s 
2

Simplies manera es

require 'date' 
date = "2011-06-02T23:59:59+05:30".gsub(/T.*/, '') 
DateTime.parse(date) 
+1

O puede usar 'Date' en lugar de' DateTime' e ignorar la operación gsub;) – Schovi

12
require 'date' 
d = Date.parse("2011-06-02T23:59:59+05:30") 
d.strftime("%F") 
+0

o simplemente 'd.to_s' :) – rubyprince

+2

esto no analizará correctamente una marca de tiempo con el tiempo - use' DateTime .parse() 'a menos que solo quiera trabajar con fechas. –

+0

@ AdamMcArthur ... El OP específicamente quería la parte de la fecha solamente. Pero tienes razón. incluso para las fechas, si omitimos la parte del tiempo y las zonas horarias, puede ser peligroso, porque puede ser otro día en otra zona horaria. Entonces, mejor use 'DateTime.parse'. – rubyprince

2

Time.parse() debería permitir que permite analizar toda la fecha y hora. Luego puede usar time.strftime (cadena) para formatear eso como solo una fecha en una cadena.

 
date = Time.parse("2011-06-02T23:59:59+05:30") 
date_string = time.strftime("%y-%m-%d") 
of 
date_string = time.strftime("%F") 

(ver Ruby Doc for Time para más formatos de cadena de salida) lo anterior debe funcionar si quieres una cadena; si quieres manejar un objeto de fecha, entonces la clase Date de ruby ​​puede ayudarte a manejarlo, pero creo que todo debe hacerse con los objetos Time; vea Ruby Doc for Date para los detalles de la clase Date.

Espero que ayude, avíseme si me he dirigido en la dirección incorrecta con mi respuesta.

Cuestiones relacionadas