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中文網其他相關文章!