我正试着计算出两次约会之间的天数。运行线程“AWT 0”中的代码: java.lang.ClassCastException: java.util.Date无法转换为java.time.temporal.Temporal时出错
这是我的代码:
ServiceJpaController serController = new ServiceJpaController(emf);
List<Service> serviceList = serController.findServiceEntities();
LocalDate today = LocalDate.now();
System.out.println("Today date: "+ today);
for(Service service:serviceList){
Date lastServiced = service.getDateOfService();
System.out.println("Serviced date: "+ lastServiced);
long daysBetween = Duration.between(lastServiced.toInstant(), today).toDays();
if(daysBetween >= 90){
jTxtAreaServiceDate.append(service.toString());
}}添加print语句只是为了检查变量是否包含日期,而这些变量就是这样做的。输出窗口显示:
Today date: 2022-08-03
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.time.temporal.Temporal
Serviced date: Sun May 08 00:00:00 BST 2022我已经找过解决办法了,但到目前为止还没有找到任何解决办法。如果有人能解释这个错误意味着什么,以及我如何着手解决我的问题,我将非常感激。
发布于 2022-08-03 18:49:36
我认为您能做的最好的事情是看看是否可以为代码LocalDate Date lastServiced = service.getDateOfService();获取LocalDate,这意味着从方法service.getDateOfService();返回LocalDate
有时候它可能不在你的控制范围之内。因此,您可以尝试下一个最佳解决方案,即将Util.Date转换为LocalDate。您可以使用下面的代码。
LocalDate lastServiceLocalDate = lastServiced.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();现在有了两个LocalDate,所以您可以使用下面的代码在
long daysBetween = DAYS.between(lastServiceLocalDate, today);发布于 2022-08-03 19:06:46
Duration.between()接受两个Temporal对象,并返回作为long之间的几天。不幸的是,Date不是Temporal类型的对象。
因此,您需要将Date转换为LocalDate。我认为下面的代码是可行的。
ServiceJpaController serController = new ServiceJpaController(emf);
List<Service> serviceList = serController.findServiceEntities();
LocalDate today = LocalDate.now();
System.out.println("Today date: "+ today);
for(Service service:serviceList){
Date lastServiced = service.getDateOfService();
System.out.println("Serviced date: "+ lastServiced);
long daysBetween =
Duration.between(
lastServiced
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate(),
today
)
.toDays();
if(daysBetween >= 90){
jTxtAreaServiceDate.append(service.toString());
}}https://stackoverflow.com/questions/73226160
复制相似问题