LoginSignup
3
3

More than 5 years have passed since last update.

【rails5】CSVエクスポートで出力される時刻とビューに出力される時刻を、JSTで一致させたい

Posted at

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自体の時刻設定など気にしたこともなかったので、勉強になりました!

3
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
3
3