我有两个日期字符串,我想知道它们之间有多少秒的差异。
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;
在此特定示例中,exp
为 23
。这里有什么问题?
最佳答案
.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/