我的时间是这样产生的:
SimpleDateFormat dateFormatUCT = new SimpleDateFormat("yyyy-MM-dd HH:mm");
dateFormatUCT.setTimeZone(TimeZone.getTimeZone("UCT"));
String deadline = dateFormatUCT.format(new Date());
我现在把它作为一个叫做截止日期的字符串。我希望稍后再次获取当前日期时间,并比较截止日期是否已过。如果没有通过,我想计算剩余的时间。有没有一个良好的内置方式这样做已经牢记数据现在是一个字符串?
TIA
答案 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。
我希望它有所帮助..