2012/12/05

[Rails] 日付データの取り扱い:DB保存のタイムゾーンと、表示時のタイムゾーンを別にしたい時

DB保存はUTCで、画面表示時はそれぞれのタイムゾーンで(例えばJSTで)とか

Rails3 だと config/application.rb で 保存するタイムゾーンと 画面表示時に使うタイムゾーンを分けて設定できる

↓保存時のタイムゾーン

config.active_record.default_timezone = :local
※設定しない場合は default='utc'


↓表示時のタイムゾーン


config.time_zone = 'Tokyo' 
※Controllerで ユーザのタイムゾーンを↑切り替えれば 指定のタイムゾーンで表示される(はず)



ただし、↑この便利な設定の恩恵にあずかるには、保存する 日付フィールドを ただのTimeで保存してはダメ
ActiveSupport::TimeWithZoneクラスにする必要がある


start_at = Time.parse("入力された日付")
↑とかだと Timeクラスになっってしまう(コンソールとかで確認できる)


start_at = Time.zone.parse("入力された日付")
↑常に Time.zone を使うようにしないとダメ



参考)
Rails3系のtimezoneの扱いに関するメモ #Rails - Qiita http://qiita.com/items/68341489a9c5149b815d

[Rials3]Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal ~未来志向で行こう~ http://d.hatena.ne.jp/twodollarz/20120703
















[Advent Calendar][2012] あとで見返すための 2012 Advent Calendarをまとめて貼っておく

毎年 Advent Calendarは 眺めてるだけでも楽しいのね
ということで、今年のめも
(あれ?今年のMySQLのはないの?ないの?)


Advent Calendar 2012まとめ - NAVER まとめ http://matome.naver.jp/odai/2135217818800380701

Advent Calendar一覧 http://qiita.com/advent-calendar

●以下 個人的めも

PHP Advent Calendar jp 2012 : ATND http://atnd.org/events/34462

CakePHP Advent Calendar 2012 http://www.adventar.org/calendars/40

FuelPHP Advent Calendar 2012 : ATND http://atnd.org/events/33753

Ruby on Rails Advent Calendar 2012 / Sep. - Qiita http://qiita.com/advent-calendar/2012/ruby-on-rails

Ruby Advent Calendar 2012 - Qiita http://qiita.com/advent-calendar/2012/ruby

Vim Advent Calendar 2012 : ATND http://atnd.org/events/33746


軽めのjQuery Advent Calendar 2012 http://www.adventar.org/calendars/29

あまり知られていないけど役に立つJavascript tips Advent Calendar 2012 - Qiita http://qiita.com/advent-calendar/2012/javascript-mechanco-tips