计算剩余时间?
我有一个时间是由这样生成的:
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 。
我希望它有帮助..