计算剩余时间?

时间:2013-03-07 02:45:27

标签: java

我的时间是这样产生的:

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

String deadline = dateFormatUCT.format(new Date());

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

TIA

3 个答案:

答案 0 :(得分:9)

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

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);

答案 1 :(得分:1)

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

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

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

谢谢!

@leo。

答案 2 :(得分:0)

我认为你应该看看Joda time。 它是标准Java Date API的增强版,比Calendar API更轻。

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

我希望它有所帮助..