2010-01-05 7 views
5

Tengo una columna de base de datos con la sintaxis "0000-00-00 00:00:00". En PHP Haría date ('Y-m-d H: i: s');Ruby - DateTime for Database

En Ruby, hago

require 'date' 
now = DateTime::now() 
puts "#{now.year()}-#{now.mon()}-#{now.mday()} #{now.hour()}:#{now.min()}:#{now.sec()}" 

El resultado es: "05/01/2010 10: 16: 4" Eso no está bien. ¿Cómo podría crear una "cadena de tiempo" con el formato "0000-00-00 00:00:00"?

Muchas gracias de antemano Saludos &

+0

Véase también http://stackoverflow.com/questions/1230296/how-do-i-format- a-date-to-mm-dd-aaaa-en-ruby – glmxndr

Respuesta

9

Puede dar formato a las fechas como en PHP gracias a la documentación incorporada Time clase, consulte there.

Esto daría para su caso:

t = Time.now 
puts t.strftime("%Y-%m-%d %H:%M:%S") 
+0

muchas gracias por su ayuda! – Tim

2

un poco más corto

t = Time.now 
puts t.strftime("%F %T") 

=> "2015-01-06 14:01:05" 
2

método ISO8601 pueden ser útiles también:

>> Time.now.utc.iso8601 
=> "2015-05-08T16:45:22Z" 
0

ActiveRecord tiende a almacenar fechas/horas como UTC, entonces usar utc hará que sus datos sean más consistentes

t = Time.now.utc 
puts t.strftime("%F %T") 

=> "2016-05-06 19:05:01" 
0

Si está utilizando rieles/ActiveSupport continuación to_s(:db) será el camino más corto:

Time.now.to_s(:db) 
=> "2017-05-22 11:14:40"