Rails DateTime.now без времени


92

Мне нужно использовать DateTime.now, чтобы получить текущую дату и «убрать» время.

Например, это показывает, чего я не хочу:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Это показывает , что я делать хочу:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


11
DateTime без времени - это дата :) вы имеете в виду Date.today?
ajahongir

Ответы:


176

Вы можете использовать одно из следующих:

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

@sekmo begin_of_day является частью активной поддержки (рельсы).
Игорь Капков

4
Лучше не использовать DateTime.nowбез зоны. Это лучше использовать один из 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_fвместо этого.
Брайан Димас

спасибо @BryanDimas, ваш комментарий помогает. Может ли VPN повлиять на подключение ip к другим странам?
Дженуэль Ганавед,

21

Вам нужна функция strftime:

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

Это может вызвать серьезные проблемы, если вы вставляете данные в базу данных, которая ожидает %Y-%m-%d %H:%M:%Sотформатированные данные, поскольку она инвертирует значение месяца и дня
quetzaluz

Мое предложение состояло в том, чтобы использовать функцию strftime, используемый формат, который вы должны соответствующим образом настроить
VP.


4

Если вы счастливы require 'active_support/core_ext', вы можете использовать

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

1
Просто заметил , что рубин-на-рельсы тег, так что я думаю , вы это с удовольствием требуют ActiveSupport :)
Jon M


1

Если вам нужна сегодняшняя дата без времени, просто используйте Date.today


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.