Java 如何检查日期是否超过30天?
我有一个Java 如何检查日期是否超过30天?,java,date,jodatime,Java,Date,Jodatime,我有一个java.util.Date,我需要检查它是否超过30天。最好的检查方法是什么 for(Date date: listOfDates) { // how to check this date to see whether it is more than 30 days limit if(checkDateLimit()) { } } 我在Java 7上。这取决于你对“30天”的定义有多正式。如果你只想知道给定的日期(在Java中,包括毫秒以下的时间)是否有30天(毫秒)的
java.util.Date
,我需要检查它是否超过30天。最好的检查方法是什么
for(Date date: listOfDates) {
// how to check this date to see whether it is more than 30 days limit
if(checkDateLimit()) {
}
}
我在Java 7上。这取决于你对“30天”的定义有多正式。如果你只想知道给定的日期(在Java中,包括毫秒以下的时间)是否有30天(毫秒)的时间,然后,您可以计算30天内有多少毫秒,并查看当前日期是否大于给定日期的毫秒数 日期通过getTime()显示其毫秒值
private boolean older超过30天(指定日期)
{
long currentMillis=new Date().getTime();
长毫秒30天=30*24*60*60*1000;
布尔结果=givenDate.getTime()<(当前毫秒-毫秒30天);
返回结果;
}
如果可以使用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;
}
按照其他人的建议,您应该使用JodaTime:
private static boolean olderThan30Days(Date givenDate) {
boolean result =
Days.daysBetween(new DateTime(givenDate), new DateTime()).isGreaterThan(Days.days(30));
return result;
}
只需删除第5行给定数据处的括号。变量不需要这样。不过我觉得不错。谢谢edited.BTW,我的日期格式如下
Thu Jun 02 12:43:44 PDT 2016
。我没有看到这个方法getTimeMillis()
?我会使用System.currentTimeMillis()
,而不是new Date().getTimeMillis()
。无论如何,如果从一个long中减去另一个并将结果与第三个进行比较会让你感到困惑,然后引入一个新的库来执行此操作。您可以使用类似于计算过去30天的日期,然后确定指定的日期是在itgetTime()之前还是之后,这将有助于您在进行少量计算的情况下比较日期。@david请在发布前搜索堆栈溢出。仍然使用Java 7.:(@david Use JodaTime,很相似,对吧,Java 8日期/时间API基本上是基于JodaTime的,所以如果你能使用JodaTime,结果应该非常相似。@earangol如果可能的话,你能提供一个关于JodaTime的例子吗?
private static boolean olderThan30Days(Date givenDate) {
boolean result =
Days.daysBetween(new DateTime(givenDate), new DateTime()).isGreaterThan(Days.days(30));
return result;
}