Browse Source

[0917] 封装gmt8 -> utc timestamp 方法

taosj 3 weeks ago
parent
commit
52cd92b64c

+ 8 - 15
forecast-backend-server/src/main/java/com/ufo/base/common/utils/TimeUtils.java

@@ -1,6 +1,7 @@
 package com.ufo.base.common.utils;
 
 import java.time.Instant;
+import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
@@ -15,24 +16,9 @@ public class TimeUtils
 {
     /** GMT+8 zone */
     private static final ZoneId ZONE_GMT8 = ZoneId.of("GMT+8");
-
-    /** GMT+8 偏移秒数 */
-    private static final long GMT8_OFFSET_SECONDS = 8L * 3600;
-
     /** 默认日期格式 */
     private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-    /**
-     * 将 GMT+8 时间(unix 秒)转换为 UTC 时间(unix 秒)
-     *
-     * @param gmt8Seconds GMT+8 时间 unix 秒
-     * @return UTC 时间 unix 秒
-     */
-    public static long gmt8ToUtc(long gmt8Seconds)
-    {
-        return gmt8Seconds - GMT8_OFFSET_SECONDS;
-    }
-
     /**
      * 将 UTC 时间(unix 秒)格式化为 GMT+8 日期字符串
      *
@@ -56,4 +42,11 @@ public class TimeUtils
         return ZonedDateTime.ofInstant(Instant.ofEpochSecond(utcSeconds), ZONE_GMT8)
                 .format(formatter);
     }
+
+    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+    private static final ZoneId GMT8 = ZoneId.of("GMT+8");
+    public static long gmt8Time2Utc(String timeStr){
+        LocalDateTime startLdt = LocalDateTime.parse(timeStr, FORMATTER);
+        return startLdt.atZone(GMT8).toEpochSecond();
+    }
 }

+ 1 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/controller/DataShortTermPowerForecastCorrectController.java

@@ -18,6 +18,7 @@ import com.ufo.project.forecast.shortterm.power.domain.DataShortTermPowerForecas
 import com.ufo.project.forecast.shortterm.power.service.IDataShortTermPowerForecastCorrectService;
 import com.ufo.base.framework.web.controller.BaseController;
 import com.ufo.base.framework.web.domain.AjaxResult;
+import com.ufo.base.common.utils.TimeUtils;
 import com.ufo.base.common.utils.poi.ExcelUtil;
 import com.ufo.base.framework.web.page.TableDataInfo;
 

+ 2 - 11
forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/controller/UltraShortTermPowerForecastingController.java

@@ -5,15 +5,11 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.TimeZone;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
@@ -49,8 +45,6 @@ public class UltraShortTermPowerForecastingController extends BaseController
 
     private static final String PATTERN_SECOND = "yyyy-MM-dd HH:mm:ss";
     private static final String PATTERN_COMPACT = "yyyyMMddHHmm";
-    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-    private static final ZoneId GMT8 = ZoneId.of("GMT+8");
 
     @Autowired
     private IDataUltraShortTermPowerForecastingService dataUltraShortTermPowerForecastingService;
@@ -121,11 +115,8 @@ public class UltraShortTermPowerForecastingController extends BaseController
         List<UltraShortTermPowerForecastData> result = new ArrayList<>();
         try
         {
-            LocalDateTime startLdt = LocalDateTime.parse(startTimeStr, FORMATTER);
-        LocalDateTime endLdt   = LocalDateTime.parse(endTimeStr, FORMATTER);
-
-        long startUnix = startLdt.atZone(GMT8).toEpochSecond();
-        long endUnix   = endLdt.atZone(GMT8).toEpochSecond();
+        long startUnix = TimeUtils.gmt8Time2Utc(startTimeStr);
+        long endUnix   = TimeUtils.gmt8Time2Utc(endTimeStr);
 
             List<DataUltraShortTermPowerForecasting> dataList = dataUltraShortTermPowerForecastingService
                     .selectByTimeRange(stationId.toString(), startUnix, endUnix);