diff --git a/common/pom.xml b/common/pom.xml index b4beee15..f25a73c4 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -242,6 +242,11 @@ spring-web true + + org.springframework + spring-webmvc + true + org.springframework.boot spring-boot diff --git a/common/src/main/java/com/jeesite/common/lang/DateUtils.java b/common/src/main/java/com/jeesite/common/lang/DateUtils.java index 55daff2d..6a1f5e83 100644 --- a/common/src/main/java/com/jeesite/common/lang/DateUtils.java +++ b/common/src/main/java/com/jeesite/common/lang/DateUtils.java @@ -4,10 +4,11 @@ */ package com.jeesite.common.lang; +import com.jeesite.common.utils.LocaleUtils; import org.apache.commons.lang3.time.FastDateFormat; import java.lang.management.ManagementFactory; -import java.text.ParseException; +import java.text.ParsePosition; import java.util.Calendar; import java.util.Date; @@ -21,7 +22,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { private static final String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM", - "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH", "yyyy.MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH", "yyyy.MM", "yyyy年MM月dd日", "yyyy年MM月dd日 HH时mm分ss秒", "yyyy年MM月dd日 HH时mm分", "yyyy年MM月dd日 HH时", "yyyy年MM月", "yyyyMMdd", "yyyyMM", "yyyy", "yyyy-MM-dd'T'HH:mm:ss'Z'"}; @@ -45,15 +46,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static String formatDate(Date date, String pattern) { String formatDate = null; if (date != null){ -// if (StringUtils.isNotBlank(pattern)) { -// formatDate = DateFormatUtils.format(date, pattern); -// } else { -// formatDate = DateFormatUtils.format(date, "yyyy-MM-dd"); -// } if (StringUtils.isBlank(pattern)) { pattern = "yyyy-MM-dd"; } - formatDate = FastDateFormat.getInstance(pattern).format(date); +// formatDate = DateFormatUtils.format(date, "yyyy-MM-dd"); + formatDate = FastDateFormat.getInstance(pattern, + LocaleUtils.getTimeZone(), LocaleUtils.getLocale()).format(date); } return formatDate; } @@ -77,7 +75,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { */ public static String getDate(String pattern) { // return DateFormatUtils.format(new Date(), pattern); - return FastDateFormat.getInstance(pattern).format(new Date()); + return FastDateFormat.getInstance(pattern, + LocaleUtils.getTimeZone(), LocaleUtils.getLocale()).format(new Date()); } /** @@ -88,11 +87,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { * @return */ public static String getDate(String pattern, int amont, int type) { - Calendar calendar = Calendar.getInstance(); + Calendar calendar = Calendar.getInstance(LocaleUtils.getTimeZone(), LocaleUtils.getLocale()); calendar.setTime(new Date()); calendar.add(type, amont); // return DateFormatUtils.format(calendar.getTime(), pattern); - return FastDateFormat.getInstance(pattern).format(calendar.getTime()); + return FastDateFormat.getInstance(pattern, + LocaleUtils.getTimeZone(), LocaleUtils.getLocale()).format(calendar.getTime()); } /** @@ -155,11 +155,26 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { * 日期型字符串转化为日期对象,指定日期解析格式 */ public static Date parseDate(final String str, final String... parsePatterns) { - try { - return parseDate(str, null, parsePatterns); - } catch (ParseException e) { - return null; +// try { +// return DateUtils.parseDate(str, Locale.getDefault(), parsePatterns); +// } catch (ParseException e) { +// return null; +// } + ParsePosition pos = new ParsePosition(0); + Calendar calendar = Calendar.getInstance(LocaleUtils.getTimeZone(), LocaleUtils.getLocale()); + for (final String parsePattern : parsePatterns) { + FastDateFormat format = FastDateFormat.getInstance(parsePattern); + calendar.clear(); + try { + if (format.parse(str, pos, calendar) && pos.getIndex() == str.length()) { + return calendar.getTime(); + } + } catch (final IllegalArgumentException ignored) { + // leniency is preventing calendar from being set + } + pos.setIndex(0); } + return null; } /** @@ -239,7 +254,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { * @return */ public static int getWeekOfYear(Date date){ - Calendar cal = Calendar.getInstance(); + Calendar cal = Calendar.getInstance(LocaleUtils.getTimeZone(), LocaleUtils.getLocale()); cal.setTime(date); return cal.get(Calendar.WEEK_OF_YEAR); } @@ -253,7 +268,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { if (date == null){ return null; } - Calendar calendar = Calendar.getInstance(); + Calendar calendar = Calendar.getInstance(LocaleUtils.getTimeZone(), LocaleUtils.getLocale()); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); @@ -271,7 +286,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { if (date == null){ return null; } - Calendar calendar = Calendar.getInstance(); + Calendar calendar = Calendar.getInstance(LocaleUtils.getTimeZone(), LocaleUtils.getLocale()); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); @@ -326,5 +341,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } return new Date[]{beginDate, endDate}; } - + + @Deprecated + public DateUtils() { + // empty + } } diff --git a/common/src/test/java/com/jeesite/test/lang/DateUtilsTest.java b/common/src/test/java/com/jeesite/test/lang/DateUtilsTest.java index b1dffc01..37c9f301 100644 --- a/common/src/test/java/com/jeesite/test/lang/DateUtilsTest.java +++ b/common/src/test/java/com/jeesite/test/lang/DateUtilsTest.java @@ -18,6 +18,7 @@ public class DateUtilsTest { public static void main(String[] args) throws ParseException { System.out.println(DateUtils.formatDate(DateUtils.parseDate("2023/3/6"))); + System.out.println(DateUtils.formatDateTime(DateUtils.parseDate("2023-3-6 12:30:15"))); System.out.println(DateUtils.getDate("yyyy年MM月dd日 E")); long time = new Date().getTime()-DateUtils.parseDate("2023-11-19").getTime(); System.out.println(time/(24*60*60*1000));