Date对象将在java中的两个不同日期对象上返回1537865065664
我希望在java中使用new Date().getTime()以秒为单位计算时差。 但我将返回长数字,如1537865065664。 如何获得两个Date()对象之间的差异。 我将在下面附上我的代码的几个部分Date对象将在java中的两个不同日期对象上返回1537865065664,java,date,Java,Date,我希望在java中使用new Date().getTime()以秒为单位计算时差。 但我将返回长数字,如1537865065664。 如何获得两个Date()对象之间的差异。 我将在下面附上我的代码的几个部分 Date starttime=new Date(); long diff= new Date().getTime() - starttime.getTime() System.out.println("hangupClicked New Time :: "+new
Date starttime=new Date();
long diff= new Date().getTime() - starttime.getTime()
System.out.println("hangupClicked New Time :: "+new Date().getTime()+" :: "+starttime.getTime());
输出::
挂起单击新时间::1537865248609::1537865348612使用date1.getTime()-date2.getTime()获得的差异以毫秒为单位。您可以将输出除以1000,以秒为单位获得差值
(date1.getTime() - date2.getTime())/1000;
new Date().getTime()以毫秒为单位返回时间。因此,如果你想在几秒钟内,你需要将差值除以1000
Date starttime=new Date();
long diff= (new Date().getTime() - starttime.getTime())/1000;
如果需要秒数,则将差值除以1000,即可获得秒数。Date().getTime()以毫秒为单位返回值。getTime()的返回类型为从1970年1月1日到指定日期的毫秒。因此,为了获得秒数的差异,请使用下面的
(date.getTime() - date2.getTime())/1000;
java.time
刚刚打印的这个片段:
Difference in seconds: 0
这与预期的一样,因为对Instant.now()
的两次调用之间没有一秒钟的间隔
你的代码出了什么问题?
您正确地计算了两个Date
对象之间的毫秒差。您没有打印差异,因此从未看到它是正确的。你没有把它转换成秒
为了说明第一点,我在代码中添加了这一行:
System.out.println("diff (milliseconds):: " + diff);
然后我从中得到了这个输出:
hangupClicked New Time :: 1537890219204 :: 1537890219204
diff (milliseconds):: 0
也就是说,你不应该在2018年使用日期。这个类早已过时,同时设计也很糟糕。您应该更喜欢使用java.time,即现代的java日期和时间API
链接
- 解释如何使用
java.time
- 关于Jon Skeet的编码博客
差异秒::100
与预期或期望的结果有何不同?你想要哪个结果@RahulStill我得到了挂起单击的差异秒::100挂起单击的新时间::1537873474080::1537873374061新日期().getTime()返回==>15378650656664日期开始时间=新日期();long diff=(new Date().getTime()-starttime.getTime())/1000;System.out.println(“秒差”+diff)new Date().getTime()
是执行System的一种无效方法。currentTimeMillis()
这就是您想要的吗?我也没有真正理解你的问题。您对差异的计算看起来是正确的,但您没有打印差异。为什么要使用日期
?Date
类早已过时,存在大量设计问题。我建议您要么使用System.currentTimeMillis()
然后使用TimeUnit
转换为秒,要么使用更好的Instant
和Duration
查找差异并转换为秒。
hangupClicked New Time :: 1537890219204 :: 1537890219204
diff (milliseconds):: 0