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

Miguel
fuente
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
Igor Kapkov
fuente
@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")
VP.
fuente
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.
9

¿Qué hay de Date.today.to_time?

Ernesto
fuente
4

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

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800
Jon M
fuente
1
Acabo de notar la etiqueta ruby-on-rails, así que supongo que está feliz de requerir ActiveSupport :)
Jon M
3

Puedes usar solo:

Date.current
Evan Ross
fuente
1

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

LordKiz
fuente
0

Lo averigué. Esto funciona:

DateTime.now.in_time_zone.midnight
Miguel
fuente