为什么差值为负值?

这个想法是计算两次之间的差异(以毫秒为单位),其中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);


缥缈止盈
浏览 151回答 3
3回答

阿晨1998

由于您正在将时间解析为 a java.util.Date,这是以毫秒为单位存储的时间瞬间,因此它只是将日期保留Thu Jan 01 23:59:00 1970在 epoch 日期但与您的时间相同。但是new Date()为您提供当前日期,因此当您比较两者时,您会得到很大的差异。对于此类情况,最好使用调试器。

吃鸡游戏

date2 = sdf.parse(time2) 返回一个日期对象,从纪元 - 1970 年 1 月 1 日开始。新日期立即获取时间getTime 函数获取自 1970 年 1 月 1 日以来的秒数,因此新的 Date 值会更大。

梵蒂冈之花

String time2 = "23:59:00"; 不是将来的日期。由于您没有在此处设置任何日期组件而仅使用时间组件,因此默认日期设置为日期组件,即 1970 年 1 月 1 日。因此,与 new Date()(当前日期)相比,1970 年 1 月 1 日 23:59:00不是未来日期
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java