Time olmadan DateTime.now Rails


92

Geçerli tarihi almak ve saati "çıkarmak" için DateTime.now'u kullanmam gerekiyor.

Örneğin, bu benim istemediğim şeyi gösterir :DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Ne Bu gösteriler yapmak istiyorum:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


11
Time olmadan DateTime is Date :) mi demek istiyorsun Date.today?
ajahongir

Yanıtlar:


177

Aşağıdakilerden birini kullanabilirsiniz:

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

@sekmo begin_of_day, activesupport'un (raylar) bir parçasıdır.
Igor Kapkov

5
DateTime.nowBölge olmadan kullanmamak daha iyidir. Bu birini kullanmak daha iyidir 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_fyerine.
Bryan Dimas

teşekkürler @BryanDimas, yorumunuz yardımcı olur. Diğer ülkelere ip değiştirilirse VPN etkileyebilir mi?
Jenuel Ganawed

21

İhtiyacınız olan şey strftime işlevi:

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

Eğer beklediği bir veritabanına veri ekleme, bu önemli sorunlara neden olabilir %Y-%m-%d %H:%M:%Sbu ay ve gün değerini ters olacak gibi verileri biçimlendirilmiş
quetzaluz

Benim önerim strftime işlevini kullanmaktı, kullanılan format, kendinizi buna göre özelleştirmek zorunda kalıyor
VP.


4

Eğer mutluysan require 'active_support/core_ext'kullanabilirsin

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

1
Tıpkı tahmin böylece, raylar yakut-on-etiketi fark vardır ActiveSupport :) gerektirecek mutlu
Jon M


1

Zaman olmadan bugünün tarihini istiyorsanız, sadece kullanın Date.today


0

Anladım. Bu çalışıyor:

DateTime.now.in_time_zone.midnight
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.