サブノート

技術的なトピックが中心の備忘録

[Java][GAE]日本時間を取得する

ローカル環境とデプロイ後の環境とでは少し挙動が違った。

/** 現在日時をDateで返す */
public static String getCurrentTime() throws ParseException {
  SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD'T'HH:mm:ss");
  TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
  return sdf.format(new Date());
}

この場合、ローカル環境では現在日時が返却されるが、デプロイ環境ではUTCで返却され9時間ずれる。
以下のように修正すればOK。

/** 現在日時をDateで返す */
public static String getCurrentTime() throws ParseException {
  SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD'T'HH:mm:ss");
  sdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));  //←ここ
  return sdf.format(new Date());
}