6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ActiveSupport 無しで beginning_of_day

Posted at

お題

時刻(日時)を表すデータがあって,その時刻を含む日の開始の瞬間(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/timerequire すれば使える。

素の 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

感想

小ネタ感がハンパない。

こんなの既出だろうと思ったけど,類似の記事が見つけられなかった。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?