Google App EngineのBackendで処理をしようと思いました。
日本時間の何時に起動するかはcron.xmlに定義しますね。
<cron> <url>/hoge/fuga</url> <description>HogeFuga</description> <schedule>everyday 09:00</schedule> <timezone>Asia/Tokyo</timezone> <target>backend</target> </cron>
起動後に検索したEntityのDate型のプロパティと日本時間での比較を行いたく、Calendar.getInstance()で取得した日付を用いました。
しかし、日本時間では取得できませんでした。まぁ、それはそうですね。
そこで、ロケールやタイムゾーンを指定すべく、次のようにしましたが、ダメでした。
Calendar now1 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo")); Calendar now2 = Calendar.getInstance(Locale.JAPAN); Calendar now3 = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"), Locale.JAPAN);
悩んだ挙句にたどり着いたのが、次の方法です。
Calendar now = Calendar.getInstance(); now.add(Calendar.HOUR_OF_DAY, TimeZone.getTimeZone("Asia/Tokyo").getRawOffset() / 3600000);
もっと良い方法があればいいな。