如何检查第一个日期是否早于第二个?

时间:2015-08-03 20:28:28

标签: java date

首先我得到:

LocalDate today = LocalDate.now();

和第二

Date date = new Date();
date.setDate(Integer.valueOf(s[0]));
date.setMonth(Integer.valueOf(s[1]));
date.setYear(Integer.valueOf(s[2]));
LocalDate topicDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

如何检查第一个日期和第二个日期之间的差异是否为7天? 例如,今天是03-08-2015,第二个日期是20-07-2015,差异超过7天,但如何检查?

我应该将日期转换为毫秒吗?

5 个答案:

答案 0 :(得分:0)

我相信这仍然是目前最好的方式。 您可以在此处查看有关此主题的一些见解: Calculate date/time difference in java

答案 1 :(得分:0)

您可以转换为毫秒,或者您可以单独检查年份是否更大,然后如果它们是相同的检查以查看月份是否大于检查日。转换为毫秒很容易。

答案 2 :(得分:0)

我相信你正在寻找这样的东西:

Date date = /*your date object you want to compare*/;
Instant now = Instant.now();
Instant sevenDaysFromYourDate = Instant.ofEpochMilli(date.getTime()).plus(Duration.ofDays(7));

if (now.isAfter(sevenDaysFromYourDate)) {
    //today is more than seven days past date
}

答案 3 :(得分:0)

由于您使用的是Java 8 library(data.table)#v1.9.5+ library(splitstackshape) dcast(getanID(data, c('id', 'date')), id+date+description~ paste('schedule', .id, sep="."), value.var='value') ,因此可以使用LocalDate类的plusDaysminusDays方法。

此外,您不应该使用(旧的,不推荐使用)LocalDate对象来创建第二个日期。最好使用java.util.Date来构建年,月,日的日期。

示例代码:

LocalDate.of

请注意,您也可以使用 LocalDate today = LocalDate.now(); LocalDate topicDate = LocalDate.of( Integer.valueOf(s[2]), Integer.valueOf(s[1]), Integer.valueOf(s[0])); System.out.println(today); System.out.println(topicDate); if ( today.minusDays(7).equals(topicDate)) { System.out.println( "Exactly a week difference between today and topicDate"); } else if ( today.minusDays(7).compareTo(topicDate) > 0 ) { System.out.println("TopicDate is more than a week before today"); } else { System.out.println("TopicDate is less than a week before today"); } 来获得完全相等 - 我只是想证明为了相等,compareTo也可以。

当然,还有equalsisAfter方法也能以优雅的方式进行比较。

答案 4 :(得分:0)

LocalDate today = LocalDate.now();
if (topicDate.isAfter(today.plusDays(7))) {
    System.out.println("Yes");
}
else {
    System.out.println("No");
}