¿Cómo creo un objeto de fecha Ruby a partir de la siguiente cadena?¿Cómo creo un objeto de fecha de Ruby a partir de una cadena?
DD-MM-YYYY
¿Cómo creo un objeto de fecha Ruby a partir de la siguiente cadena?¿Cómo creo un objeto de fecha de Ruby a partir de una cadena?
DD-MM-YYYY
Date.parse('31-12-2010')
Alternativamente Date#strptime(str, format)
.
Puede usar .
Time.parse("20-08-2010")
# => Fri Aug 20 00:00:00 +0200 2010
Sin embargo, debido a Rubí podría analizar la fecha como "DD-MM-AAAA", la mejor manera es ir con DateTime#strptime donde puede especificar el formato de entrada.
Porque en los EE. UU. Obtienen las fechas al revés, es importante no usar simplemente Date.parse()
porque verán que el 11/11/2001 puede ser el 11 de septiembre de 2001 en EE. UU. Y el 9 de noviembre de 2001 en el resto del mundo. Para ser completamente inequívoco use Date::strptime(your_date_string,"%d-%m-%Y")
para analizar correctamente una cadena de fecha del formato dd-mm-yyyy
.
probar este para estar seguro:
>irb
>> require 'date'
=> true
>> testdate = '11-09-2001'
=> "11-09-2001"
>> converted = Date::strptime(testdate, "%d-%m-%Y")
=> #<Date: 4918207/2,0,2299161>
>> converted.mday
=> 11
>> converted.month
=> 9
>> converted.year
=> 2001
Para otros strptime
formatos ver http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html
también siempre me aseguro puse mi base horaria de :utc
si mi sitio web va a ser el manejo de cualquier fecha, y use Javascript
en el lado del cliente para mostrar las horas locales.
como no puede obtener el tiempo de objetos a partir de una cadena como esta:
t = Time.parse "9:00 PM"
=> 2013-12-24 21:00:00 +0530
t = Time.parse "12:00 AM"
=> 2013-12-24 00:00:00 +0530
Pero Rubí analizar esto como una fecha!
Para que pueda usar la columna como una cadena.
add_column :table_name, :from, :string, :limit => 8, :default => "00:00 AM", :null => false
add_column :table_name, :to, :string, :limit => 8, :default => "00:00 AM", :null => false
Y puede asignar objeto de cadena al atributo,
r.from = "05:30 PM"
r.save
Y analizar la cadena para conseguir objeto tiempo,
Time.zone.parse("02:00 PM")
No es necesario para este formato de cadena en particular, pero lo mejor la utilidad de análisis sintáctico de cadena a hora que conozco es Chronic que está disponible como una gema y funciona para aproximadamente el 99.9% de las cajas de uso para las fechas/horas formateadas en humanos.
Me parece que este enfoque más sencillo, ya que evita tener que especificar el formato de fecha para el analizador:
fecha1 = Time.local (2012, 1, 20, 12, 0, 0) .to_date