Rails DateTime.now sin tiempo


91

Necesito usar DateTime.now para tomar la fecha actual y "quitar" la hora.

Por ejemplo, esto muestra lo que no quiero:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Esto demuestra lo que hago quieren:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


10
DateTime sin Time es Date :) ¿Te refieres a Date.today?
ajahongir

Respuestas:


173

Puede utilizar uno de los siguientes:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date

@sekmo begin_of_day es parte del soporte activo (rieles).
Igor Kapkov

3
Mejor no usar DateTime.nowsin zona. Es mejor utilizar uno de Time.zone.now, DateTime.current, DateTime.now.in_time_zone, DateTime.now.utc, DateTime.now.getlocal, DateTime.now.iso8601, DateTime.now.jisx0301, DateTime.now.rfc3339, DateTime.now.to_i, DateTime.now.to_fen su lugar.
Bryan Dimas

gracias @BryanDimas, tu comentario ayuda. ¿Puede afectar la VPN si se cambia la IP a otros países?
Jenuel Ganawed

20

Lo que necesitas es la función strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")

Esto puede causar problemas significativos si se va a insertar datos en una base de datos que espera recibir %Y-%m-%d %H:%M:%Sdatos con formato, ya que invertir el valor mes y día
quetzaluz

Mi propuesta fue usar la función strftime, el formato usado que tienes que personalizar en consecuencia
VP.


4

Si está contento require 'active_support/core_ext', puede usar

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800

1
Acabo de notar la etiqueta ruby-on-rails, así que supongo que está feliz de requerir ActiveSupport :)
Jon M


1

Si desea la fecha de hoy sin la hora, simplemente use Date.today


0

Lo averigué. Esto funciona:

DateTime.now.in_time_zone.midnight
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.