為什麼 SimpleDateFormat.parse 傳回的格式與指定的格式不同?

Susan Sarandon
發布: 2024-10-27 16:10:02
原創
909 人瀏覽過

 Why Does SimpleDateFormat.parse Return a Different Format Than Specified?

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 的優點:

  • 消除格式問題
  • 提供現代現代且全面的日期和時間API

以上是為什麼 SimpleDateFormat.parse 傳回的格式與指定的格式不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!