Disons que j'ai un objet datetime, par exemple DateTime.now
. Je veux régler les heures et les minutes sur 0 (minuit). Comment puis je faire ça?
Disons que j'ai un objet datetime, par exemple DateTime.now
. Je veux régler les heures et les minutes sur 0 (minuit). Comment puis je faire ça?
Réponses:
Grâce à ActiveSupport, vous pouvez utiliser:
DateTime.now.midnight
DateTime.now.beginning_of_day
OU
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)
OU
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
Nevermind, compris. Besoin de créer un nouveau 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)
cela fonctionne.
now = DateTime.now
DateTime
. Vous aurez des problèmes ennuyeux si vous vivez dans un pays qui a l'heure d'été comme le Royaume-Uni. Voir une explication ici. gist.github.com/pixeltrix/e2298822dd89d854444b
Attention : DateTime.now.midnight
et DateTime.now.beginning_of_day
renvoyez la même valeur (qui est l'heure zéro du jour en cours - minuit ne renvoie pas 24:00:00 comme vous l'attendriez de son nom).
J'ajoute donc ceci comme information supplémentaire pour quiconque pourrait utiliser la réponse acceptée pour calculer minuit x jours dans le futur.
Par exemple, un essai gratuit de 14 jours qui devrait expirer à minuit le 14e jour:
DateTime.now.midnight + 14.days
est le matin du 14e jour, ce qui équivaut à un essai de 13.x jours (x est la partie de la journée restante - si maintenant c'est midi, alors c'est un essai de 13,5 jours).
Vous auriez en fait besoin de faire ceci:
DateTime.now.midnight + 15.days
pour obtenir minuit le 14e jour.
Pour cette raison, je préfère toujours utiliser beginning_of_day
, car c'est 00:00:00. Utiliser minuit peut être trompeur / mal compris.
Si vous l'utilisez souvent, pensez à installer cette gemme pour améliorer l'analyse des dates:
https://github.com/mojombo/chronic
require 'chronic'
Chronic.parse('this 0:00')