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
4

Вы можете использовать только:

Date.current
Эван Росс
источник
1

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

LordKiz
источник
0

Догадаться. Это работает:

DateTime.now.in_time_zone.midnight
Майк
источник