Рейки DateTime.now без часу


91

Мені потрібно скористатися 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


10
DateTime без Time is Date :) ви маєте на увазі Date.today?
аджахонгір

Відповіді:


173

Ви можете використовувати одне з наступного:

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

@sekmo beginning_of_day є частиною активної підтримки (рейок).
Ігор Капков

3
Краще не використовувати 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замість цього.
Bryan Dimas

дякую @BryanDimas, ваш коментар допомагає. Чи може VPN вплинути, якщо переспрямовувати ip в інші країни?
Дженуель Ганавд

20

Вам потрібна функція 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
Щойно помітив тег ruby-on-rails, тож, мабуть, ви із задоволенням потребуєте ActiveSupport :)
Джон М


1

Якщо ви хочете сьогоднішню дату без часу, просто використовуйте Date.today


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.