se puede utilizar el método de Date.strptime
proporcionada en la biblioteca estándar de Ruby:
require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
Como alternativa, como se sugiere en los comentarios, se puede usar Date.parse
, debido a que las heurísticas funcionan correctamente en este caso:
require 'date'
string = "20120723"
date = Date.parse(string)
Tanto lanzará una ArgumentError
si la fecha no es válida:
require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date
Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date
Si también desea representar horas, minutos, etc., debe consultar DateTime. DateTime también proporciona un método parse
que funciona como el método de análisis en Date
. Lo mismo ocurre con strptime
.
Date.parse también funciona para YYYYMMDD. No se necesita cadena de formato. – rrhartjr
¿Qué tal una excepción de análisis? – chrisapotek
¿Hay alguna forma de detectar si una cadena lanzará la excepción de análisis? – theUtherSide