我在服务器上检查未来日期时遇到问题。由于 Date.parse() 在 chrome 和 Firefox 下的解析方式不同。在 Firefox 下,一个负的日期时间被传递给服务器。由于我想避免这种浏览器问题,我尝试在服务器端实现验证。
Date currentDate = new Date();
Date interviewingDate = interview.getInterviewingDate();
LocalDateTime currentDateTime = convertToLocalDateTime(currentDate);
LocalDateTime interviewingDateTime = convertToLocalDateTime(interview.getInterviewingDate());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedCurrentDateTime = currentDateTime.format(formatter);
String formattedInterviewDateTime = interviewingDateTime.format(formatter);
我试图将服务器时间与案例面试时间进行比较。由于不允许未来的一天,if(interviewingDateTime.isAfter(currentDateTime)) return -1
但是当我测试它时,结果不是我所期望的。
这是一些日志:
currentDateTime.getTime() 1607592350160
interviewingDateTime.getTime() -125883137443000
formattedCurrentDateTime 2020-12-10 17:25:50
formattedInterviewDateTime 2021-12-03 13:55:00
currentDateTime toLocalDate 2020-12-10
interviewingDateTime toLocalDate -2020-12-03
interviewingDateTime.toLocalTime()13:55
currentDateTime.toLocalTime() 17:25:50.160
interviewingDateTime.isAfter(currentDateTime): false
interviewingDate.compareTo(currentDate): -1
我希望 isAfter 返回 true,因为面试时间是未来的日期。当我尝试输出本地日期和原始日期对象 getTime() 时,我看到有负值。无论如何将负数转换回正常的正数日期?或者任何其他方式来比较和检查日期是预期的未来日期?