Предупреждение : DateTime.now.midnight
и DateTime.now.beginning_of_day
возвращают одно и то же значение (нулевой час текущего дня - полночь не возвращает 24:00:00, как вы ожидаете от ее имени).
Поэтому я добавляю это в качестве дополнительной информации для тех, кто может использовать принятый ответ для расчета полуночи x дней в будущем.
Например, 14-дневная бесплатная пробная версия, срок действия которой должен истечь вполночь 14-го дня:
DateTime.now.midnight + 14.days
- это утро 14-го дня, что соответствует 13-дневному пробному дню (x - это часть оставшегося дня - если сейчас полдень, то это13,5 дневная пробная версия).
На самом деле вам нужно будет сделать это:
DateTime.now.midnight + 15.days
, чтобы получить полночь 14-го дня.
По этой причине я всегда предпочитаю использоватьbeginning_of_day
, так как это 00:00:00.Использование полуночи может вводить в заблуждение / неправильно понимать.