这个想法是计算两次之间的差异(以毫秒为单位),其中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()
为您提供当前日期,因此当您比较两者时,您会得到很大的差异。
对于此类情况,最好使用调试器。
吃鸡游戏
TA贡献1829条经验 获得超7个赞
date2 = sdf.parse(time2) 返回一个日期对象,从纪元 - 1970 年 1 月 1 日开始。
新日期立即获取时间
getTime 函数获取自 1970 年 1 月 1 日以来的秒数,因此新的 Date 值会更大。
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
String time2 = "23:59:00"; 不是将来的日期。由于您没有在此处设置任何日期组件而仅使用时间组件,因此默认日期设置为日期组件,即 1970 年 1 月 1 日。
因此,与 new Date()(当前日期)相比,1970 年 1 月 1 日 23:59:00不是未来日期
添加回答
举报
0/150
提交
取消