GAE のドキュメントから、運用サーバーのタイムゾーンは常に UTC であることがわかりました。ローカルで開発している間、サーバーのタイムゾーンは CET に設定されます。ローカル開発サーバーも UTC で実行するように強制する方法はありますか?
開発サーバーは Mac OS で実行されています。
ありがとう、
ユーグ
GAE のドキュメントから、運用サーバーのタイムゾーンは常に UTC であることがわかりました。ローカルで開発している間、サーバーのタイムゾーンは CET に設定されます。ローカル開発サーバーも UTC で実行するように強制する方法はありますか?
開発サーバーは Mac OS で実行されています。
ありがとう、
ユーグ
答えを見つけました。サーバーのタイムゾーンを設定するには、Eclipse、「実行構成」、「VM 引数」の順に進み、次の「-Duser.timezone=UTC」を追加します。
これにより、サーバーのタイムゾーンが必要な値 (UTC) に設定されます。開発サーバー (少なくとも私の場合) はローカル タイムゾーンで実行されていましたが、Google App Engine の運用環境では常に UTC が実行されるため、これは非常に便利です。正味の効果は、私が開発者と製品版の間で異なる振る舞いをしたことでした。
ユーグ
これを使用して、日付値をデータストアに保存し、特定のタイムゾーンに変換できます。
DateFormat utcFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat indianFormat = new SimpleDateFormat(patternString);
utcFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
Date timestamp = utcFormat.parse(inputString);
String output = indianFormat.format(timestamp);
GAE devServer はデフォルトでローカルのタイムゾーンを使用します。
このコードを使用して、UTC に強制します。
boolean isDevEnvironment = SystemProperty.environment.value() == SystemProperty.Environment.Value.Development;
if (isDevEnvironment) {
TimeZone.setDefault(DateTimeZone.UTC.toTimeZone());
DateTimeZone.setDefault(DateTimeZone.UTC);
}
サーバーの起動時と初期化時に一度だけ実行する必要があります。