首頁  >  文章  >  資料庫  >  將 UNIX 時間戳轉換為日期時,為什麼 SimpleDateFormat.parse 的輸出與指定的不同?

將 UNIX 時間戳轉換為日期時,為什麼 SimpleDateFormat.parse 的輸出與指定的不同?

Linda Hamilton
Linda Hamilton原創
2024-10-30 03:06:28447瀏覽

Why does SimpleDateFormat.parse output differently than specified when converting UNIX timestamps to dates?

SimpleDateFormatter.parse 輸出與指定的不同

使用SimpleDateFormat 將UNIX 時間戳記為日期時,您可能會遇到指定格式時,您可能會遇到指定格式與指定格式之間的差異輸出。

在給定的範例中,目標是將 UNIX 時間戳記(「a1527069600」)轉換為「dd/MM/yyyy hh:mm:ss a」格式的日期。但是,使用 SimpleDateFormatter.format 後面跟著 SimpleDateFormatter.parse 會產生不同的輸出。

差異原因

出現差異是因為SimpleDateFormatter.parse 期望字串的格式與實例化期間指定的格式(「dd/MM/yyyy hh:mm: ss a”)。在這種情況下,SimpleDateFormatter.format 輸出的日期格式與預期的輸入格式不同,導致解析操作失敗。

解決方案

避免此問題,建議不要將日期字串傳遞給 MySQL 資料庫。相反,請使用日期物件。現代 Java 日期和時間 API java.time 提供了 LocalDateTime 等類,讓日期處理更容易。

範例:

<code class="java">String ep = "a1527069600";
long epoch = Long.parseLong(ep.substring(1));
Instant inst = Instant.ofEpochSecond(epoch);
LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();

System.out.println(ldt.toString()); // Output: 2018-05-23T15:30

PreparedStatement ps = myDatabaseConnection.prepareStatement(
        "insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);</code>

此程式碼轉換 UNIX時間戳轉換為 LocalDateTime,可以直接插入 MySQL 資料庫。

結論:

透過利用 java.time 並將日期物件而不是字串傳遞給 MySQL,您可以消除格式問題並確保日期轉換的準確性。

以上是將 UNIX 時間戳轉換為日期時,為什麼 SimpleDateFormat.parse 的輸出與指定的不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn