たとえば、DateTime.now
。時間と分を0(真夜中)に設定します。どうやってやるの?
ActiveSupport のおかげで、以下を使用できます:
DateTime.now.midnight
DateTime.now.beginning_of_day
OR
DateTime.now.change({ hour: 0, min: 0, sec: 0 })
# More concisely
DateTime.now.change({ hour: 0 })
now = DateTime.now
DateTime.new(now.year, now.month, now.day, 0, 0, 0, now.zone)
OR
now = DateTime.now
DateTime.parse(now.strftime("%Y-%m-%dT00:00:00%z"))
わかった、わかった。新しいDateTimeを作成する必要があります。
DateTime.new(now.year, now.month, now.day, 0, 0, 0, 0)
警告:DateTime.now.midnight
およびDateTime.now.beginning_of_day
は同じ値を返します(これは現在の日のゼロアワーです-真夜中は、その名前から予想される24:00:00を返しません)。
そのため、受け入れられた回答を使用して将来の深夜x日を計算する可能性がある人のために、これを追加情報として追加しています。
たとえば、14日の午前0時に期限切れになる14日間の無料試用版:
DateTime.now.midnight + 14.days
は14日目の朝で、13.x日の試用期間に相当します(xは残りの日の一部です-正午であれば13.5日の試用期間です)。
実際にこれを行う必要があります:
DateTime.now.midnight + 15.days
14日目の真夜中を取得します。
このため、私は常にbeginning_of_day
、これは00:00:00であるため。深夜を使用すると、誤解を招く/誤解される可能性があります。
頻繁に使用する場合は、このgemをインストールして日付の解析を改善することを検討してください。
https://github.com/mojombo/chronic
require 'chronic'
Chronic.parse('this 0:00')