0

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

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

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

我现在把它作为一个叫做截止日期的字符串。我想稍后再次获取当前日期时间并比较截止日期是否已过。如果它没有通过,我想计算还剩多少时间。考虑到数据现在是字符串,是否有一种好的内置方法可以做到这一点?

TIA

4

3 回答 3

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);
于 2013-03-07T02:49:04.797 回答
1

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

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

..稍后您可以执行与上述相同的操作并获得以毫秒为单位的时间差。如果你将它除以 1000,得到秒,再除以 60 得到分钟,依此类推。

谢谢!

@leo。

于 2013-03-07T02:53:02.950 回答
0

我想你应该看看Joda time。它是对标准 Java Date API 的增强,比 Calendar API 更轻巧。

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

我希望它有帮助..

于 2013-03-07T03:05:18.747 回答