お題
時刻(日時)を表すデータがあって,その時刻を含む日の開始の瞬間(0 時)をどうやって得るか。
Rails なら ActiveSupport の beginning_of_day
を使えばよい。
たとえば今日の始まりであれば
require "active_support/time"
t = Time.now
p t.beginning_of_day # => 2019-12-04 00:00:00 +0900
といった具合。
この例のように,Rails じゃなくても active_support/time
を require
すれば使える。
素の Ruby ではどうする?
答え
require "date"
t = Time.now
p t.to_date.to_time # => 2019-12-04 00:00:00 +0900
Date 化すると時・分・秒の情報が消え,それを Time 化すると,0 時 0 分 0 秒ということになるみたい。
なお,上の例は Time オブジェクトが最初に与えられていたが,「今日の始まり」であれば Date.today
から出発してもよい:
require "date"
p Date.today.to_time # => 2019-12-04 00:00:00 +0900
感想
小ネタ感がハンパない。
こんなの既出だろうと思ったけど,類似の記事が見つけられなかった。