为了账号安全,请及时绑定邮箱和手机立即绑定

为什么差值为负值?

为什么差值为负值?

缥缈止盈 2021-12-22 19:30:20
这个想法是计算两次之间的差异(以毫秒为单位),其中time2在未来。结果应该是一个正值,因为time2在未来。错误在哪里?SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");String time2 = "23:59:00"; //this time should be in the futureDate date2 = null;try {    date2 = sdf.parse(time2);} catch (ParseException e) {    e.printStackTrace();}long difference = date2.getTime() - new Date().getTime();System.out.println("difference: " + difference);
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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

对于此类情况,最好使用调试器


查看完整回答
反对 回复 2021-12-22
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

date2 = sdf.parse(time2) 返回一个日期对象,从纪元 - 1970 年 1 月 1 日开始。

新日期立即获取时间

getTime 函数获取自 1970 年 1 月 1 日以来的秒数,因此新的 Date 值会更大。


查看完整回答
反对 回复 2021-12-22
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

String time2 = "23:59:00"; 不是将来的日期。由于您没有在此处设置任何日期组件而仅使用时间组件,因此默认日期设置为日期组件,即 1970 年 1 月 1 日。

因此,与 new Date()(当前日期)相比,1970 年 1 月 1 日 23:59:00不是未来日期


查看完整回答
反对 回复 2021-12-22
  • 3 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信