次のコードがあります。 Javaの日付時刻の文字列形式はgmt + 0です。したがって、後で別のローカルタイムゾーンに従って変換する必要がありますが、デフォルトのタイムゾーンを設定しようとすると、マシンがgmt + 8上にあるため、別の8時間前に戻ってきます。出力は私に2017-12-09 09:00 :00ですが、これはgmt + 0なので2017-12-09 17:00:00のままにします。Java設定のタイムゾーンがgmt + 0にデフォルト設定されていません
String existingTime = "2017-12-09 17:00:00";
String newTime = "2017-12-09 14:00:00";
Date existingDateTime = null;
Date newDateTime = null;
Date localexistingDateTime = null;
Date localnewDateTime = null;
DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
// sdf.setTimeZone(TimeZone.getTimeZone("GMT+8:30"));
try {
existingDateTime = dateTimeFormat.parse(existingTime);
newDateTime = dateTimeFormat.parse(newTime);
System.out.println("GMT existingDateTime" + sdf.format(existingDateTime));
System.out.println("GMT newDateTime" + sdf.format(newDateTime));
} catch (ParseException ex) {
System.out.println("MyError:Parse Error has been caught for date parse close");
ex.printStackTrace(System.out);
}
従来の 'java.util.Date'の使用を強く勧めることはできません。これが理由の1つです。代わりに、あなたのユースケースにふさわしい 'java.time'パッケージ内の適切なクラスを探すべきです。 –
@ JoeCだから、これを克服するためのあなたの提案は、これを示しているGoogleのソリューションのほとんどを引き起こします。 – user8012596
私の提案は、 'java.util.Date'の使用をやめ、代わりに' java.time'パッケージのクラスを使用することです。 –