Railsy DateTime.now bez czasu


92

Muszę użyć DateTime.now, aby pobrać aktualną datę i „usunąć” godzinę.

Na przykład pokazuje to, czego nie chcę:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

To pokazuje, co mam robić chcą:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


11
DateTime bez Time to Date :) czy masz na myśli Date.today?
ajahongir

Odpowiedzi:


177

Możesz użyć jednego z następujących:

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

@sekmo Starting_of_day jest częścią pakietu activesupport (szyny).
Igor Kapkov

5
Lepiej nie używać DateTime.nowbez strefy. Lepiej użyć jednej z 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_fzamiast.
Bryan Dimas

dzięki @BryanDimas, twój komentarz pomaga. Czy VPN może wpłynąć na zmianę adresu IP na inne kraje?
Jenuel Ganawed

21

Potrzebujesz funkcji strftime:

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

Może to powodować poważne problemy, jeśli wstawiasz dane do bazy danych, która oczekuje %Y-%m-%d %H:%M:%Ssformatowanych danych, ponieważ spowoduje to odwrócenie wartości miesiąca i dnia
quetzaluz

Moją propozycją było użycie funkcji strftime, używanego formatu musisz odpowiednio dostosować
VP.


4

Jeśli chcesz require 'active_support/core_ext', możesz użyć

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

1
Właśnie zauważyłem ruby-on-rails tag, więc myślę, że ty jesteś szczęśliwy wymagać ActiveSupport :)
Jon M


1

Jeśli chcesz mieć dzisiejszą datę bez godziny, po prostu użyj Date.today


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.