Procházet zdrojové kódy

获取ISO8601格式的日期

陈长荣 před 3 měsíci
rodič
revize
c881e04984

+ 23 - 2
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/util/WordDataService.java

@@ -12,6 +12,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.io.InputStream;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Base64;
 import java.util.Date;
 import java.util.Map;
@@ -50,9 +54,9 @@ public class WordDataService {
                 Optional.ofNullable(userIdNameCache.getNicknameByUserId(createById))
                         .orElse("");
         dataMap.put("docCreator", createBy);
-        dataMap.put("docCreatedTime", DateUtil.getISO8601Date(createTime));
+        dataMap.put("docCreatedTime", getISO8601Date(createTime));
         dataMap.put("docLastModifiedBy", UserUtil.getNickName());
-        dataMap.put("docLastModifiedTime", DateUtil.getISO8601Date(new Date()));
+        dataMap.put("docLastModifiedTime", getISO8601Date(new Date()));
 
         //当前年份、月份、日
         String[] split = DateUtil.formatDay(new Date()).split("-");
@@ -61,6 +65,23 @@ public class WordDataService {
         dataMap.put("currentDay", split[2]);
     }
 
+    /**
+     * 获取ISO8601格式的日期字符串
+     */
+    private static String getISO8601Date(Date date) {
+        if (date == null) {
+            return "";
+        }
+        // 将Date对象转换为Instant对象
+        Instant instant = date.toInstant();
+
+        // 将Instant对象转换为ZonedDateTime对象(带有时区信息)
+        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
+
+        // 使用ISO 8601格式化器格式化ZonedDateTime对象
+        return zonedDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
+    }
+
     /**
      * 获取图片base64
      *