CSVエクスポートで出力される時刻とビューに出力される時刻を、JSTで一致させたい
解決。
下記のように設定しており、時刻の保存もTime.nowやTime.currentなど様々なパターンで試したが、どうやってもDBに保存される値とビューの表示が9時間ズレてしまい、CSVファイルに上手く反映されない。
#DB保存はUTCだが、表示はJST
config.time_zone = 'Tokyo'
# DBに保存する時間をJSTにする
config.active_record.default_timezone = :local
結論
PC自体のタイムゾーンを変更してやると解決出来ました。
下記の記事を参考にしました。
1
https://eng-entrance.com/linux-time-timezone
2
https://www.server-memo.net/tips/command/cp/cp.html
現在のタイムゾーンを確認するため、コンソールでdateと打つと、
$ date
Sat Feb 9 11:19:48 UTC 2019
システムのタイムゾーンがUTC時刻になっている。
おそらくこれが原因。
タイムゾーンをJSTに設定するには、1の記事によると、
「/usr/share/zoneinfo/」ディレクトリのしたにあるゾーン情報ファイルを「/etc/localtime」としてコピーすることでタイムゾーンを設定できる。実態をコピーしてもよいが、シンボリックリンクをはっても同じ効能が得られる。
とのこと。
試します。
$ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cp: cannot create regular file ‘/etc/localtime.2019-02-09’: Permission denied
アクセス拒否されました。
2の記事を参考に、-fオプションをつけます。
$ cp -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cp: cannot remove ‘/etc/localtime’: Permission denied
これもアクセス拒否。。
2の記事に
※他のユーザがオーナーのファイルで、コピーしようするユーザに書き込み権限が無い場合は、「-f」オプションをつけても上書きはできません。(rootユーザを除く)
と書いてあったので、sudoコマンドを入れると、
$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
アクセス拒否されない!
再度dateと打って確認すると、
$ date
Sat Feb 9 20:27:11 JST 2019
JSTになりました!
この後CSVエクスポートすると、CSVファイル、ビュー共に日本時間で表示が出来ました!
pumaのタイムゾーンがUTCになっていたので、このあたりをどうにか出来ればと思っていましたが、PC自体の時刻設定など気にしたこともなかったので、勉強になりました!