java - 为什么差值是负值?
问题描述
这个想法是计算两次之间的差异(以毫秒为单位),其中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);
解决方案
由于您正在将时间解析为 a java.util.Date
,这是一个以毫秒为单位的即时时间,因此它只是将日期保留在Thu Jan 01 23:59:00 1970
epoch 日期,但保留了您的时间。但是new Date()
,它会为您提供当前日期,因此当您比较两者时,您会得到相当大的差异。
对于这样的情况,最好使用调试器。
推荐阅读
- java - 我不希望特定行的字段根本不更新
- android - 在谷歌托管商店中发布私有应用程序是否应满足最低 API 级别要求?
- scala - 使用 Scala/pysprak 以及 Databricks 和存储在 ADLS 上的文件从 Zip 文件中的文件中读取内容
- checkbox - 减少数据网格中行的高度
- javascript - 如何将函数/事件处理程序从 React 传递给 Web 组件
- python - 生成具有正态分布的随机数
- delphi - 带有多个 AND 条件的 IF 语句出错
- typescript - TypeScript 中“set”函数的正确类型是什么?
- field - ODOO 12:在“account.invoice”的表单视图中显示模型“purchase.order”的字段
- python - 为每个唯一客户按日期将数据分成不同的组