次のコードがあります。
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//get current date time with Date()
Date date = new Date();
String currentDate = dateFormat.format(date);
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
System.out.println(sdf.format(getSomeDate(currentDate,TimeZone.getTimeZone("Asia/Omsk"))));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Date getSomeDate(final String str, final TimeZone tz) throws ParseException {
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
sdf.setTimeZone(tz);
return sdf.parse(str);
}
ここでの問題は、必要なタイムゾーン (「アメリカ/シカゴ」) を使用すると、完全に間違った時刻になることです。現在の時刻を -6 ではなく +6 にします。
プログラムの正しい時刻と日付を取得するには、GMT + 6 からタイムゾーンを設定する必要があるため、どうすればこれを修正できますか。
また、Java は DST 設定を自動的に組み込みますか? これは世界中の人々によって使用されているため、DST 時間が異なる人もいるため、正しい時間を維持するのは困難です。