在某次發布應用程式後,收到了輸出檔案內容時間日期重複的問題,找了好一陣子餵進SimpleDateFormat中的時間都是正確的,怎麼換算的時間會錯誤?
程式碼如下:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); long processTimes = System.currentTimeMillis(); thisResult.put("CreateDate", df.format(startProcessTime));
文件一查下去才發現,SimpleDateFormat這東西已經不安全,在多執行序或者頻繁重複使用的環境中,內部容易卡時間,所以不建議使用了。
那替代品就是Java 8後出的DateTimeFormatter這個東西了,使用方式比SimpleDateFormat麻煩了一點,也許以後可以考慮寫成Lib的方式使用。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//日期格式 long processTimes = System.currentTimeMillis(); Instant instant = Instant.ofEpochMilli(processTimes); LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); thisResult.put("CreateDate", localDateTime.format(dtf));
這樣即可解決SimpleDateFormat輸出亂輸出的問題!
-END-
發佈留言