如何检查日期范围是否是完整的日历月?

时间:2016-06-09 15:33:33

标签: java date

我正在尝试检查日期范围是否为1/1 / 2014-1 / 15/2014,涵盖整个日历月(该范围所在的月份)。我的范围总是满或少于整个日历月。 我的问题是找到一个快速的方法来获得基于我已经在我的范围内的月份的完整日历月份范围,然后我可以比较它们以查看它们是否相同。有人有任何想法吗?

3 个答案:

答案 0 :(得分:0)

您有输入:

  1. 范围开始日期(rsd)
  2. 范围结束日期(红色)
  3. 输入日期(id)
  4. 使用compareTo方法:

    if(id.compareTo(rsd) >= 0 && id.compareTo(red) <= 0)
        return true; // id is in range
    

答案 1 :(得分:0)

您可以使用Calendar课程。 只需将一天添加到上限(如果日期> = 28),您就可以检查月份是否已更改。

这也适用于闰年。

下限当然应该是该月的第一天(2014年1月1日): - )。

注意我不确定你真正想要的是什么。这应该是检查您的间隔是否涵盖整个月的方法。

答案 2 :(得分:0)

java.time

避免使用旧的日期时间类。使用Java 8及更高版本中内置的java.time类。

LocalDate类仅适用于没有时间的日期值。

LocalDate start = LocalDate.of( 2016 , 2 , 1 ) ;
LocalDate stop = start.plusDays( 15 ) ;

首先使用YearMonth确保它们完全在同一个月。

Boolean inSameMonth = YearMonth.from( start ).equals( YearMonth.from( stop ) ) ;

如果是同一个月,那么请继续查看它们是否构成整整一个月。检查两个标准:

  • 如果开始是月份的第一天
  • 如果停止是与开始同月的最后一天。

组合成一行,或将其分解为更具可读性。

Boolean isFullMonth = ( start.getDayOfMonth() == 1 ) && YearMonth.from( start ).atEndOfMonth().equals( stop ) ;