通化市网站建设_网站建设公司_Logo设计_seo优化
2026/3/1 21:23:59 网站建设 项目流程

问题出在 java.sql.Date.toInstant() 方法上!这个方法在 java.sql.Date 类中是不支持的,会抛出 UnsupportedOperationException 异常。 <br/> 看起来 employee.getInbusdat() 返回的是一个 java.sql.Date 对象,而不是 java.util.Date 对象。当我们调用 toInstant() 方法时,就会抛出这个异常。

问题分析

从错误堆栈中可以看到:

java.lang.UnsupportedOperationException: null at java.sql.Date.toInstant(Date. java:304) at com.hlig.service.sm.impl. PushServiceImpl. lambda$getWorkAnniversaryMsg$18 (PushServiceImpl.java:770)

真正的问题 : java.sql.Date.toInstant() 方法是不支持的,会抛出 UnsupportedOperationException 异常。 employee.getInbusdat() 返回的是一个 java.sql.Date 对象,而不是 java.util.Date 对象。

解决方案

我修改了 DateUtils.calculateAnniversary 方法,使用 Calendar 类来计算周年数,避免使用 toInstant() 方法:

// 修复前:使用toInstant()方法(java.sql. Date不支持) LocalDate entry = entryDate.toInstant(). atZone(ZoneId.systemDefault()).toLocalDate (); LocalDate current = currentDate.toInstant ().atZone(ZoneId.systemDefault()). toLocalDate(); // 修复后:使用Calendar类 Calendar entryCal = Calendar.getInstance (); entryCal.setTime(entryDate); Calendar currentCal = Calendar.getInstance (); currentCal.setTime(currentDate);

修复效果

  1. 解决了异常 :不再抛出 UnsupportedOperationException 异常
  2. 保持了功能 :保持了原有的业务逻辑,包括2月29日的特殊处理
  3. 兼容性更好 :能够处理 java.sql.Date 和 java.util.Date 两种类型的日期对象

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询