From 17057c704fbfbd21b7a5e4cedec770d67de849df Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 8 Nov 2023 14:13:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=BC=E5=85=A5=E5=B9=B4=E4=BB=BD?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=A4=A7=E4=BA=8E1970=E5=B9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/laws/common/util/ImportUtil.java | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java index 1356f1a5..c5626184 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/util/ImportUtil.java @@ -511,12 +511,24 @@ public class ImportUtil { // 单选日期校验 private boolean singleDateValid(String cellValue) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + // 设置lenient为false,使得日期解析更为严格 sdf.setLenient(false); try { - // 使用parse方法而不是format方法 - sdf.parse(cellValue.trim()); // 这里还添加了trim()以去除可能的空白字符 - return true; + Date date = sdf.parse(cellValue.trim()); // 解析日期 + + // 获取日期中的年份 + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + int year = cal.get(Calendar.YEAR); + + // 检查年份是否大于1970 + if (year > 1970) { + return true; + } else { + log.error("年份必须大于1970"); + return false; + } } catch (ParseException e) { // 这里捕获的应该是ParseException log.error("日期转换错误: {}", e.getMessage()); @@ -525,22 +537,33 @@ public class ImportUtil { } private boolean multiDateValid(String cellValue) { - String dataPath = "yyyy-MM-dd"; + String dateFormatPattern = "yyyy-MM-dd"; String[] dates = cellValue.split(","); - SimpleDateFormat sdf = new SimpleDateFormat(dataPath); - // 设置lenient为false,使得日期解析更为严格 + SimpleDateFormat sdf = new SimpleDateFormat(dateFormatPattern); sdf.setLenient(false); + try { - for (String date : dates) { - if (date.length() < dataPath.length()) { + for (String dateStr : dates) { + if (dateStr.length() < dateFormatPattern.length()) { + // 如果日期字符串长度小于格式字符串长度,则直接返回false + log.error("日期格式长度错误"); + return false; + } + // 解析日期字符串 + Date date = sdf.parse(dateStr.trim()); + // 使用Calendar获取年份 + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + int year = cal.get(Calendar.YEAR); + // 检查年份是否大于1970 + if (year <= 1970) { + log.error("年份必须大于1970"); return false; } - // 使用parse方法而不是format方法 - sdf.parse(date.trim()); // 这里还添加了trim()以去除可能的空白字符 } + // 所有日期验证通过 return true; } catch (ParseException e) { - // 这里捕获的应该是ParseException log.error("日期转换错误: {}", e.getMessage()); return false; }