2 つの日付オブジェクト間の期間を分単位で計算しようとしています。
このstackoverflowの質問からの調査中に、いくつかのインスピレーションを見つけました。一般に、これは正しく動作しているように見えますが、1 つのテストケースで興味深い動作が発生しています。
以下に添付されたソースコードを実行すると (単純にコピーして貼り付けることができます)、(正しい結果) 6 ではなく 66 分が返され、現在その理由がわかりません。おそらく私は今、何かを監督しているのではないでしょうか。それが何であるか教えていただけますか?
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Test {
private SimpleDateFormat parserSDF = new SimpleDateFormat("MM/dd/yy HH:mm",
Locale.ENGLISH);
public static void main(String[] args) {
Test test = new Test();
Date begin = test.createDateFromString("10/25/09 1:54");
Date end = test.createDateFromString("10/25/09 2:00");
int duration = test.minutesDiff(begin, end);
//result is 66
System.out.println(duration);
}
public int minutesDiff(Date earlierDate, Date laterDate) {
if (earlierDate == null || laterDate == null)
return 0;
return (int) ((laterDate.getTime() / 60000) - (earlierDate.getTime() / 60000));
}
public Date createDateFromString(String dateString) {
Date date = null;
try {
date = parserSDF.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
ところで、このようなものを計算するのにはるかに優れたこの Joda ライブラリが存在することは知っていますが、可能であれば、外部ライブラリなしで滞在したいと思います。
あなたが私と共有しているすべての考えに感謝します.
編集:ああ、これは時計の変更が原因である可能性がありますか?時計の変更は 2009 年 10 月 25 日に行われ、時刻は午前 3 時から午前 2 時に戻りました。これは、この結果が正しいことを意味する可能性があります