我试图以分钟为单位计算两个日期对象之间的持续时间。
在我的研究过程中,我从这个stackoverflow 问题中找到了一些灵感。一般来说,这似乎是正确的,但我在一个测试用例中遇到了一种有趣的行为。
当我运行下面附加的源代码(您可以简单地复制过去)时,它返回了 66 分钟而不是(正确的结果)6,我目前不明白为什么。也许我现在正在监督一些事情,你能告诉我它是什么吗?
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 点。这可能意味着这个结果是正确的