如何检查给定日期是否介于两个日期之间,但不应检查给定日期的时间。
我曾尝试过,但它也会检查时间范围。
有人能帮助我了解这个吗?
TIA。,
答案 0 :(得分:0)
与早期版本的Java捆绑在一起的旧日期时间类已被Java 8及更高版本中内置的java.time框架所取代。
LocalDate
类代表一个仅限日期的值,没有时间和没有时区。
LocalDate start = LocalDate.of( 2016 , 1 , 1 ) ;
LocalDate stop = LocalDate.of( 2016 , 1 , 23 ) ;
要获取当前日期,请指定时区。在任何特定时刻,今天的日期因时区而异。例如,巴黎的新日早些时候比蒙特利尔早了。
LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );
我们可以使用isEqual
,isBefore
和isAfter
方法进行比较。在日期时间工作中,我们通常使用半开放方法,其中一段时间的开始是包含,而结尾是独占。
Boolean containsToday = ( ! today.isBefore( start ) ) && ( today.isBefore( stop ) ) ;
可以通过将ThreeTen-Extra项目的jar添加到项目中来扩展java.time框架。特别是你可能会发现Interval
类很方便。
答案 1 :(得分:-1)
您可以使用Apache Commons库中的DateUtils.truncate。
示例:
DateUtils.truncate(new Date(), java.util.Calendar.DAY_OF_MONTH)
另一种选择可能是使用JODA-TIME为您打开本地日期的API
示例:
DateTime first = ...;
DateTime second = ...;
LocalDate firstDate = first.toLocalDate();
LocalDate secondDate = second.toLocalDate();
然后你可以将它们与库中的JODA-TIME compareTo()或after()进行比较:)