Java 计算剩余时间?

Java 计算剩余时间?,java,Java,我有一段时间是这样产生的: SimpleDateFormat dateFormatUCT = new SimpleDateFormat("yyyy-MM-dd HH:mm"); dateFormatUCT.setTimeZone(TimeZone.getTimeZone("UCT")); String deadline = dateFormatUCT.format(new Date()); 我现在把它作为一个字符串,叫做deadline。我想稍后再次获取当前日期,并比较截止日期是否已过。如果

我有一段时间是这样产生的:

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

String deadline = dateFormatUCT.format(new Date());
我现在把它作为一个字符串,叫做deadline。我想稍后再次获取当前日期,并比较截止日期是否已过。如果它没有通过,我想计算还有多少时间。在记住数据现在是字符串的情况下,是否有一种很好的内置方法来实现这一点


TIA

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

Date deadlineDate = dateFormatUCT.parse(deadline);
要比较另一个日期(例如
currentDate
)是否超过了截止日期,只需执行以下操作即可:

if(currentDate.after(deadlineDate)) {
    // deadline has passed, do something
}
long timeDiff = currentDate.getTime() - deadlineDate.getTime();
要获得它们之间的时间差(以毫秒为单位),只需执行以下操作:

if(currentDate.after(deadlineDate)) {
    // deadline has passed, do something
}
long timeDiff = currentDate.getTime() - deadlineDate.getTime();
您可以使用
TimeUnit
类的方法将此毫秒值转换为其他单位(如天、分钟、秒等):


比较两个日期实例的最佳方法是使用它的毫秒值。要获得值,只需执行

Date d = new Date();
long time1 = d.getTime();
…稍后,您可以执行与上面相同的操作,并以毫秒为单位获得时间差。如果你除以1000,得到秒,再除以60,得到分钟,依此类推

谢谢


@狮子座。

我想你应该看看。 它是对标准Java日期API的增强,比日历API更轻

它还有一些专门用于持续时间数量的类,如


我希望这会有帮助。

太好了,我不知道你能做到!这个帐户可以跨不同的日期等吗?例如,我使用的字符串是:2013-03-07 08:48:当然,返回的值是自1970年1月1日以来的毫秒数。作为澄清,它是自1970-01-01 UTC以来的毫秒数。用几分钟或更小的时间来计算是非常安全的。当你达到小时、天、月、年时,使用图书馆(如Joda、Pojava或日历)将时区和夏令时考虑在内会更安全。最多相差48小时。也谢谢勒米尔。