计算剩余时间?

我有一个时间是由这样生成的:

SimpleDateFormat dateFormatUCT = new SimpleDateFormat("yyyy-MM-dd HH:mm"); dateFormatUCT.setTimeZone(TimeZone.getTimeZone("UCT")); String deadline = dateFormatUCT.format(new Date()); 

我现在把它作为一个叫做截止日期的字符串。 我希望稍后再次获取当前日期时间,并比较截止日期是否已过。 如果没有通过,我想计算剩余的时间。 有没有一个良好的内置方式这样做已经牢记数据现在是一个字符串?

TIA

您可以使用您创建的相同日期格式的parse方法将String表示转换回日期:

 Date deadlineDate = dateFormatUCT.parse(deadline); 

要比较另一个日期(比如currentDate )是否已超过截止日期,它足以做到:

 if(currentDate.after(deadlineDate)) { // deadline has passed, do something } 

要获得它们之间的时间差(以毫秒为单位),只需执行以下操作即可:

 long timeDiff = currentDate.getTime() - deadlineDate.getTime(); 

您可以使用TimeUnit类的方法将此毫秒值转换为其他单位(如天,分,秒等):

 TimeUnit.SECONDS.toSeconds(timeDiff); 

比较两个Date实例的最佳方法是使用它以毫秒为单位的值。 要获得价值,请做..

 Date d = new Date(); long time1 = d.getTime(); 

..你可以像上面那样做,并获得时间的差异,以毫秒为单位。 如果将其除以1000,则获得秒数,然后再获得60分钟,依此类推。

谢谢!

@leo。

我想你应该看看Joda的时间 。 它是标准Java Date API的增强版,比Calendar API更轻。

它还有一些专门用于持续数量的课程,如Joda Duration 。

我希望它有帮助..