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 等類,讓日期處理更容易。
範例:
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);
這段程式碼將UNIX時間戳轉換為LocalDateTime,可直接插入MySQL資料庫。
結論:
透過利用java.time並將日期物件而不是字串傳遞給MySQL,您可以消除格式問題並確保日期轉換的準確性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3