我试图计算两个日期对象之间在几分钟内的持续时间。从两个Date对象计算错误时间以计算持续时间
我在我的研究中发现了一些灵感,来自this 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;
}
}
我顺便说一句知道存在这个乔达库,它确实在计算这个东西更好的方式,但如果可能的话,我想留在没有外部库。
感谢您与我分享的每一个想法。
编辑:啊,这可能是因为时钟改变?时钟改变是在2009年10月25日,时间从早上3点恢复到凌晨2点。这可能意味着,这个结果是正确的
我在这里编译并运行它:http://www.compileonline.com/compile_java_online.php它的工作 – giorashc
如果我运行该代码,我得到6 –