SimpleDateFormatter.parse 給出與指定格式不同的輸出
嘗試將UNIX 時間戳轉換為具有特定格式的日期時會出現此問題使用SimpleDateFormat 進行格式化。儘管設定了所需的格式,sdf.parse 結果仍以不同的格式顯示。
解決方案:
要解決此問題,建議避免將日期傳遞為字串到 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();</code>
對於資料庫存儲,LocalDateTime 表示格式為「2018-05-23T15:30」的日期時間。
將LocalDateTime 持久保存在MySQL 資料庫:
<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
UTC 值的替代:
如果資料庫值應以UTC(協調世界時)存儲,請使用以下轉換:
<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>
使用java.time 的優點:
以上是為什麼 SimpleDateFormat.parse 傳回的格式與指定的格式不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!