我已经基于下面的条件实现了isbookable()方法,但是isbookable()返回true如果到达日期>=离开日期或离开日期<到达日期简而言之它允许重叠日期。有谁能帮我解决这个问题吗?条件:如果可为请求的“到达日期”和“离开日期”提供住宿,则isbookable方法返回true,否则返回false。
@Override
public boolean isBookable(Integer custId,Long accommodationId, Date arrival_date, Date departure_date) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
Rentability rentability=new Rentability();
RentabilityDAO rdao=RentabilityDAOFactory.getInstance();
List<Rentability> list=new ArrayList<Rentability>();
list=rdao.getAllRentabilityByAccommodationId(accommodationId);
//business logic
return;
}
2条答案
按热度按时间nhhxz33t1#
希望它能让你停滞不前。。
vcudknz32#
localdate::isafter后
您正在使用糟糕的日期时间类,这些类在几年前被jsr310中定义的现代java.time类所取代。从不使用
Date
,Calendar
,和SimpleDateFormat
.对于不带时间和时区的仅日期值,请使用
LocalDate
.要进行比较,请使用
isEqual
,isBefore
,和isAfter
.一个简短的说法“是相同的或以后的”是“不是以前”。
您的代码:
(“日-月-年”)
当以文本形式交换日期时间值时,仅使用标准iso 8601格式。这些格式在java.time中默认使用。
为了向用户演示,让java.time使用
DateTimeFormatter.ofLocalized…
方法。所有这些已经在堆栈溢出上被多次讨论过了。搜索以了解更多信息。
关于java.time
java.time框架内置于Java8及更高版本中。这些类取代了旧的遗留日期时间类,例如
java.util.Date
,Calendar
, &SimpleDateFormat
.要了解更多信息,请参阅oracle教程。和搜索堆栈溢出的许多例子和解释。规格为jsr 310。
现在处于维护模式的joda time项目建议迁移到java.time类。
您可以直接与数据库交换java.time对象。使用符合jdbc 4.2或更高版本的jdbc驱动程序。不需要线,不需要线
java.sql.*
班级。hibernate5和jpa2.2支持java.time。从哪里获得java.time类?
JavaSE8、JavaSE9、JavaSE10、JavaSE11及更高版本—标准JavaAPI的一部分,带有捆绑实现。
Java9带来了一些小的特性和修复。
java se 6和java se 7
大部分java.time功能都是通过三个十个后端口后端口移植到Java6和Java7的。
安卓
android(26+)的更高版本捆绑了java.time类的实现。
对于早期的android(<26),一个称为api desugaring的过程带来了java.time功能的一个子集,这些功能最初没有内置到android中。
如果desugaring不能提供您所需要的,那么threetenabp项目将threeten backport(如上所述)改编为android。了解如何使用threetenabp…。