1. ハマったこと
AWS上のプログラムで現在日時を取得して、
Salesforce上の日付型項目に日付を入れていたのだが、
UTC(協定世界時)で登録されていたため、日本時間の-9時間で登録されていた。
Salesforceの日付型項目は日付しか表示されないので、
時間がずれていることに気づかなかった。
(午前0時から9時の間にテストをしていれば日付がずれるので気づいたと思われる。)
2. 例
▼作成日 (Salesforceの作成タイムスタンプ)
2014/09/11 8:48
▼開始日 (日付型項目。AWSで現在日時を取得して値をセット)
開始日 2014/09/10
▼開始日の内訳(計算式)
9/11 8:49 - 9時間 = 9/10 23:49
3. 対処法
インスタンスがAmazon Linuxの場合、AWSにログインして下記コマンドを実行して
EC2の時間をUTC(協定世界時)→JST(日本時間)に変更できる。
##【コマンド】/etc/localtimeを置き換える
#cp -p /usr/share/zoneinfo/Japan /etc/localtime
##【コマンド】 権限で怒られた場合→sudoコマンドを使用する。
#sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
コマンド実行後、サーバーの再起動をしないと、時間が変更されませんでしたので、忘れずに。
4. 補足:Herokuの時間変更方法
Herokuの場合は下記コマンドで時間変更が可能。
heroku config:add TZ=Asia/Tokyo --app [アプリ名]