From bdf8f19609636e8bb5533192ff89841c64789606 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期六, 26 二月 2022 09:47:53 +0800 Subject: [PATCH] 优化Excel格式化不同类型的日期对象 --- src/main/java/com/ruoyi/common/utils/DateUtils.java | 36 +++++++++++++++++- src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 45 +++++++++++++++++++--- 2 files changed, 73 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/DateUtils.java b/src/main/java/com/ruoyi/common/utils/DateUtils.java index 8ff95f1..a2cb78d 100644 --- a/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -3,6 +3,11 @@ import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; @@ -22,7 +27,7 @@ public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; - + private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", @@ -121,7 +126,7 @@ return null; } } - + /** * 鑾峰彇鏈嶅姟鍣ㄥ惎鍔ㄦ椂闂� */ @@ -129,6 +134,14 @@ { long time = ManagementFactory.getRuntimeMXBean().getStartTime(); return new Date(time); + } + + /** + * 璁$畻鐩稿樊澶╂暟 + */ + public static int differentDaysByMillisecond(Date date1, Date date2) + { + return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); } /** @@ -152,4 +165,23 @@ // long sec = diff % nd % nh % nm / ns; return day + "澶�" + hour + "灏忔椂" + min + "鍒嗛挓"; } + + /** + * 澧炲姞 LocalDateTime ==> Date + */ + public static Date toDate(LocalDateTime temporalAccessor) + { + ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } + + /** + * 澧炲姞 LocalDate ==> Date + */ + public static Date toDate(LocalDate temporalAccessor) + { + LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); + ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); + return Date.from(zdt.toInstant()); + } } diff --git a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index f2e4140..8b9ba85 100644 --- a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -9,6 +9,8 @@ import java.lang.reflect.Method; import java.math.BigDecimal; import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -132,7 +134,7 @@ * 褰撳墠琛屽彿 */ private int rownum; - + /** * 鏍囬 */ @@ -314,7 +316,7 @@ String dateFormat = field.getAnnotation(Excel.class).dateFormat(); if (StringUtils.isNotEmpty(dateFormat)) { - val = DateUtils.parseDateToStr(dateFormat, (Date) val); + val = parseDateToStr(dateFormat, (Date) val); } else { @@ -409,7 +411,7 @@ { return exportExcel(list, sheetName, StringUtils.EMPTY); } - + /** * 瀵筶ist鏁版嵁婧愬皢鍏堕噷闈㈢殑鏁版嵁瀵煎叆鍒癳xcel琛ㄥ崟 * @@ -431,7 +433,6 @@ * @param list 瀵煎嚭鏁版嵁闆嗗悎 * @param sheetName 宸ヤ綔琛ㄧ殑鍚嶇О * @return 缁撴灉 - * @throws IOException */ public void exportExcel(HttpServletResponse response, List<T> list, String sheetName) { @@ -446,7 +447,6 @@ * @param sheetName 宸ヤ綔琛ㄧ殑鍚嶇О * @param title 鏍囬 * @return 缁撴灉 - * @throws IOException */ public void exportExcel(HttpServletResponse response, List<T> list, String sheetName, String title) { @@ -823,7 +823,7 @@ String dictType = attr.dictType(); if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) { - cell.setCellValue(DateUtils.parseDateToStr(dateFormat, (Date) value)); + cell.setCellValue(parseDateToStr(dateFormat, (Date) value)); } else if (StringUtils.isNotEmpty(readConverterExp) && StringUtils.isNotNull(value)) { @@ -1396,4 +1396,37 @@ } return sheetIndexPicMap; } + + /** + * 鏍煎紡鍖栦笉鍚岀被鍨嬬殑鏃ユ湡瀵硅薄 + * + * @param dateFormat 鏃ユ湡鏍煎紡 + * @param val 琚牸寮忓寲鐨勬棩鏈熷璞� + * @return 鏍煎紡鍖栧悗鐨勬棩鏈熷瓧绗� + */ + public String parseDateToStr(String dateFormat, Object val) + { + if (val == null) + { + return ""; + } + String str; + if (val instanceof Date) + { + str = DateUtils.parseDateToStr(dateFormat, (Date) val); + } + else if (val instanceof LocalDateTime) + { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val)); + } + else if (val instanceof LocalDate) + { + str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val)); + } + else + { + str = val.toString(); + } + return str; + } } -- Gitblit v1.9.3