Rails DateTime.now senza Time


91

Devo usare DateTime.now per prendere la data corrente e "togliere" l'ora.

Ad esempio, questo mostra ciò che non voglio:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Questo dimostra quello che faccio vogliono:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


10
DateTime senza Time è Date :) intendi Date.today?
ajahongir

Risposte:


173

Puoi utilizzare uno dei seguenti:

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

@sekmo begin_of_day fa parte di activesupport (rails).
Igor Kapkov

3
Meglio non usare DateTime.nowsenza zona. E 'meglio usare una delle 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_finvece.
Bryan Dimas

grazie @BryanDimas, il tuo commento aiuta. La VPN può influire se si cambia l'IP in altri paesi?
Jenuel Ganawed il

20

Quello che ti serve è la funzione strftime:

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

Ciò può causare problemi significativi se si inseriscono dati in un database che si aspetta %Y-%m-%d %H:%M:%Sdati formattati poiché invertirà il valore del mese e del giorno
quetzaluz

La mia proposta era quella di utilizzare la funzione strftime, il formato utilizzato che devi personalizzare di conseguenza
VP.


4

Se sei felice require 'active_support/core_ext', puoi usare

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

1
Ho appena notato il tag ruby-on-rails, quindi immagino che tu sia felice di richiedere ActiveSupport :)
Jon M


1

Se vuoi la data odierna senza l'ora, usa Date.today


0

Capito. Funziona:

DateTime.now.in_time_zone.midnight
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.