首页 > 解决方案 > 为什么差值是负值?

问题描述

这个想法是计算两次之间的差异(以毫秒为单位),其中time2是未来的时间。结果应该是正值,因为time2在未来。错误在哪里?

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

String time2 = "23:59:00"; //this time should be in the future

Date date2 = null;

try {
    date2 = sdf.parse(time2);
} catch (ParseException e) {
    e.printStackTrace();
}

long difference = date2.getTime() - new Date().getTime();
System.out.println("difference: " + difference);

标签: java

解决方案


由于您正在将时间解析为 a java.util.Date,这是一个以毫秒为单位的即时时间,因此它只是将日期保留在Thu Jan 01 23:59:00 1970epoch 日期,但保留了您的时间。但是new Date(),它会为您提供当前日期,因此当您比较两者时,您会得到相当大的差异。

对于这样的情况,最好使用调试器


推荐阅读