Diciamo che ho un oggetto datetime es DateTime.now
. Voglio impostare ore e minuti su 0 (mezzanotte). Come lo posso fare?
Diciamo che ho un oggetto datetime es DateTime.now
. Voglio impostare ore e minuti su 0 (mezzanotte). Come lo posso fare?
Risposte:
Grazie ad ActiveSupport puoi utilizzare:
DateTime.now.midnight
DateTime.now.beginning_of_day
O
DateTime.now.change({ hour: 0, min: 0, sec: 0 })
# More concisely
DateTime.now.change({ hour: 0 })
now = DateTime.now
DateTime.new(now.year, now.month, now.day, 0, 0, 0, now.zone)
O
now = DateTime.now
DateTime.parse(now.strftime("%Y-%m-%dT00:00:00%z"))
DateTime.new(now.year, now.month, now.day, 0,0,0, now.zone) != now.to_date.to_datetime
Non importa, capito. È necessario creare un nuovo DateTime:
DateTime.new(now.year, now.month, now.day, 0, 0, 0, 0)
DateTime.new(Time.now.year, Time.now.month, Time.now.day, 0, 0, 0)
funziona.
now = DateTime.now
DateTime
. Avrai problemi fastidiosi se vivi in un paese che ha l'ora legale come il Regno Unito. Vedi una spiegazione qui. gist.github.com/pixeltrix/e2298822dd89d854444b
Attenzione : DateTime.now.midnight
e DateTime.now.beginning_of_day
restituisce lo stesso valore (che è l'ora zero del giorno corrente - mezzanotte non restituisce 24:00:00 come ci si aspetterebbe dal suo nome).
Quindi aggiungo questo come ulteriori informazioni per chiunque possa utilizzare la risposta accettata per calcolare la mezzanotte x giorni in futuro.
Ad esempio, una prova gratuita di 14 giorni che dovrebbe scadere a mezzanotte del 14 ° giorno:
DateTime.now.midnight + 14.days
è la mattina del 14 ° giorno, che equivale a 13,5 giorni di prova (x è la parte della giornata rimasta - se ora è mezzogiorno, allora è 13,5 giorni di prova).
In realtà dovresti farlo:
DateTime.now.midnight + 15.days
per arrivare a mezzanotte del 14 ° giorno.
Per questo motivo preferisco sempre utilizzare beginning_of_day
, dato che è 00:00:00. Usare la mezzanotte può essere fuorviante / frainteso.
Se lo usi spesso, considera l'installazione di questo gioiello per migliorare l'analisi della data:
https://github.com/mojombo/chronic
require 'chronic'
Chronic.parse('this 0:00')