Posted at

Time の一部を自由自在に改変したい

More than 5 years have passed since last update.

あの時間に戻れたら…

あの時間に飛ぶことができたら…

そんな願いを叶えてくれる時の魔術師、それが Time#change である。

現在時刻が 2014/01/01 00:00:00 だとします。

now = Time.zone.parse("2014/01/01 00:00:00")

#=> Wed, 01 Jan 2014 00:00:00 JST +09:00

2020年に飛びたいな。

now.change(year: 2020)

#=> Wed, 01 Jan 2020 00:00:00 JST +09:00
now
#=> Wed, 01 Jan 2014 00:00:00 JST +09:00

٩( 'ω' )و 飛べた!

しかし、実際には現在の世界線から別の世界線が派生しただけで、

現在は変えられないのです (つまり破壊的メソッドではない) 。

ちなみに、時間を変えることも可能です。

time.change(hour: 23, min: 59, sec: 59)

#=> Wed, 01 Jan 2014 23:59:59 JST +09:00

オプションで指定できるのは、

:year, :month, :day, :hour, :min, :sec, :usec だそうです。

マイクロ秒まで操作できるなんて、Time#change ちゃんパないの!