次のコードでは、ミリ秒の文字列(RSSフィードから取得されるので、文字列になります。以下の例は簡単なテストプログラムです) millisをDateオブジェクトに変換します。1970年1月の日付をミリ秒単位で返すときに1時間を失う
public static void main(String[] args) {
String ms = "1302805253";
SimpleDateFormat dateFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(Long.parseLong(ms));
try {
String dateFormat = dateFormatter.format(calendar.getTime());
System.out.println("Date Format = " + dateFormat);
Date dateParse = dateFormatter.parse(dateFormatter.format(calendar.getTime()));
System.out.println("Date Parse = " + dateParse);
} catch (ParseException e) {
// TODO: handle exception
}
}
Output:
Date Format = Fri, 16 Jan 1970 02:53:25 GMT
Date Parse = Fri Jan 16 03:53:25 GMT 1970
ご覧のとおり、カレンダーオブジェクトの書式設定と結果のStringの解析の間に、1時間が失われています。また、出力の書式が変更されました。なぜこれが起きているのか、それをどう回避するのか、誰でも助けてくれますか? Dateオブジェクトを "Date Format"出力と同じフォーマットにしたい。
イギリスはBST(= GMT + 1)、または1970年に全年が裁判であったことが問題です。 http://stackoverflow.com/questions/1238172/why-does-an-hour-get-added-on-to-java-util-date-for-dates-before-nov-1-1971 –
ああ、私見る。情報をありがとう。 – MeanwhileInHell