LoginSignup
14
15

More than 5 years have passed since last update.

ActiveSupportとタイムゾーン

Posted at

in_time_zoneTimeDateTimeのタイムゾーンを切り替えられる。

ENV["TZ"] = "UTC"

time = Time.utc(2012, 4, 30, 18)
time.in_time_zone("Asia/Tokyo")
#=> Tue, 01 May 2012 03:00:00 JST +09:00

ただしこれをやってもto_s(:db)の結果はもとのタイムゾーンをベースに出力されるので要注意。

time.in_time_zone("Asia/Tokyo").to_s(:db)
#=> 2012-04-30 18:00:00

まぁデータベースのタイムゾーンとENV["TZ"]はだいたい一致しているから、このほうが都合はいいんだろう。

特定のタイムゾーンにおける月初の時刻を、ENV["TZ"]の表現で取得したいなら2回in_time_zoneを使う。

time.in_time_zone("Asia/Tokyo").
  beginning_of_month.
  in_time_zone(ENV["TZ"])
#=> Mon, 30 Apr 2012 15:00:00 UTC +00:00
# 日本時間での2012-05-01 00:00:00

一つのテーブルで複数のタイムゾーンに対応するにはこんな変換が必要になる、のかな。

14
15
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
14
15