在Java中,前端傳遞的?1749571200000
?是一個?Unix時間戳(毫秒級),表示自1970年1月1日00:00:00 UTC以來經過的毫秒數。以下是兩種常見的解析方式(推薦使用Java 8的java.time
?API):
方法1:使用 Java 8 的?java.time
?API(推薦)
java
復制
下載
import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter;public class TimestampParser {public static void main(String[] args) {long timestamp = 1749571200000L; // 前端傳來的時間戳// Step 1: 轉換為 Instant (UTC時間)Instant instant = Instant.ofEpochMilli(timestamp);// Step 2: 轉換為本地時間(根據系統時區)LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());// Step 3: 格式化輸出(可選)DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDate = localDateTime.format(formatter);System.out.println("解析結果: " + formattedDate); // 輸出: 2025-06-09 08:00:00} }
關鍵點:
-
Instant.ofEpochMilli()
?將毫秒時間戳轉為?Instant
(UTC標準時間)。 -
LocalDateTime.ofInstant()
?結合時區(如?ZoneId.systemDefault()
)轉換為本地時間。 -
使用?
DateTimeFormatter
?自定義日期格式。
方法2:使用舊版?java.util.Date
(兼容舊項目)
java
復制
下載
import java.util.Date; import java.text.SimpleDateFormat; import java.util.TimeZone;public class LegacyTimestampParser {public static void main(String[] args) {long timestamp = 1749571200000L; // 前端傳來的時間戳// Step 1: 創建Date對象Date date = new Date(timestamp);// Step 2: 設置日期格式化器(指定時區)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 按需修改時區// Step 3: 格式化輸出String formattedDate = sdf.format(date);System.out.println("解析結果: " + formattedDate); // 輸出: 2025-06-09 08:00:00} }
時區說明
-
前端時間戳?通常是UTC時間,解析時需要明確目標時區:
-
如果前端傳遞的是UTC時間,解析時建議先轉UTC再按需調整時區。
-
示例中?
Asia/Shanghai
(UTC+8)會導致時間+8小時。
-
-
關鍵時區設置:
-
Java 8:?
ZoneId.of("UTC")
?或?ZoneId.systemDefault()
-
舊版API:?
sdf.setTimeZone(TimeZone.getTimeZone("UTC"))
-
驗證時間戳
-
工具驗證:https://www.epochconverter.com/
-
1749571200000
?對應?UTC時間 2025-06-09 00:00:00
轉換為北京時間(UTC+8)則是?2025-06-09 08:00:00
總結
場景 | 方案 |
---|---|
Java 8+ 項目 | 優先使用?Instant ?+?LocalDateTime |
兼容舊系統 (Java 7-) | 使用?Date ?+?SimpleDateFormat |
時區敏感 | 務必顯式設置目標時區 |