java - 以秒为单位的时差给了我错误的答案

标签 java parsing date date-format

我有两个日期字符串,我想知道它们之间有多少秒的差异。

2014-05-19 16:37:36:690  // formattedDate
2014-05-19 19:38:00:000  // expString

我使用以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss:SSS");
Date d1 = null;
Date d2 = null;

d1 = sdf.parse(expString);
d2 = sdf.parse(formattedDate);


long diff = d1.getTime() - d2.getTime();
long exp = diff / 1000 % 60;

在此特定示例中,exp23。这里有什么问题?

最佳答案

.getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的时间(以毫秒为单位)。因此 diff 具有两个日期之间的时间(以毫秒为单位)。

long diff = d1.getTime() - d2.getTime();
// diff = 10882310

您使用整数除法来获得秒,这会减少额外的毫秒。

long temp = diff / 1000;
// temp = 10823

然后你以 60 为模,得到秒并忽略归因于分钟的秒。

long exp = temp % 60;
// exp = 23

如果您想要两个日期之间的总时间(以秒为单位),则不需要执行最后一项操作。

关于java - 以秒为单位的时差给了我错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23740634/

相关文章:

java - Antlr 是跟踪带有参数名称和值的 Java 方法调用并返回结果的正确工具吗?

json - 解析 swift 3 中的嵌套 Json 数据

mysql - 获取 Template::Plugin::Date 来接受 MySQL 日期和日期时间

java - hibernate中的sql查询相当于什么

java - 如何使 Android ImageView 部分透明

python - 如何从 selenium webdriver 元素中提取链接?

mongodb - 使用 MongoExport,如何控制日期字段的输出?

java - 在 Typescript 中导入 Java 对象

java - Android Joda Time,从 ISOPeriodFormat 排序字符串时遇到问题

mysql - 使用 MySQL 按年和月分组,同时利用索引并避免临时/文件排序