我有一个:fs.start_link(:fs_watcher, '/users/ocaten~1')
,我需要检查它是否超过30天。检查出来的最佳方法是什么?
java.util.Date
我在Java 7上。
答案 0 :(得分:4)
这取决于你想要了解" 30天的定义。"如果您只想知道给定日期(在Java中,包括时间到毫秒)是30天(到毫秒)旧,那么您可以计算30天内有多少毫秒,看看是否当前日期大于给定日期的毫秒数。
日期通过getTime()显示其毫秒值。
private boolean olderThan30Days(Date givenDate)
{
long currentMillis = new Date().getTime();
long millisIn30Days = 30 * 24 * 60 * 60 * 1000;
boolean result = givenDate.getTime() < (currentMillis - millisIn30Days);
return result;
}
答案 1 :(得分:3)
根据其他人的建议,您应该使用JodaTime:
private static boolean olderThan30Days(Date givenDate) {
boolean result =
Days.daysBetween(new DateTime(givenDate), new DateTime()).isGreaterThan(Days.days(30));
return result;
}
答案 2 :(得分:2)
如果您可以使用Java 8,则可以执行以下操作:
boolean checkDateLimit(Date date) {
// convert Date into Java 8 LocalDate
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate today = LocalDate.now();
// count number of days between the given date and today
long days = ChronoUnit.DAYS.between(localDate, today);
return days > 30;
}