Java時間處理類 SimpleDateFormat物件的parse方法處理12點變成00點
阿新 • • 發佈:2018-12-11
SimpleDateFormat是個用得很高頻率的時間處理類
該物件的倆個主要方法:
parse方法:將字串型別(java.lang.String)解析為日期型別(java.util.Date)
format方法:將日期型別(Date)資料格式化為字串(String)
問題:使用SimpleDateFormat物件format呼叫函式parse("時間字串")列印到12點和24點的時候都會變成00點
public static long getMinuteGap(String fromTime, String toTime) throws ParseException { // 傳遞的引數計算到了秒鐘 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm"); // 注意:遇到12點會變成00 Date fromM = simpleFormat.parse(fromTime.substring(0, 16)); // 擷取到分鐘 Date toM = simpleFormat.parse(toTime.substring(0, 16)); System.out.println("擷取到分鐘的fromM:" + fromM.toString()); // 變成00:52了 System.out.println("擷取到分鐘的ToM:" + toM.toString()); long from = fromM.getTime(); long to = toM.getTime(); int gap = (int) ((to - from) / (1000 * 60)); System.out.println("util.CountTimeGap 兩個時間之間的分鐘差gap為:" + gap); return gap; } public static void main(String[] args) throws ParseException { String fromTime="2018-09-21 12:52:16"; String toTime = "2018-09-22 12:30:32"; System.out.println(getMinuteGap(fromTime, toTime)); }
擷取到分鐘的fromM:Fri Sep 21 00:52:00 CST 2018
擷取到分鐘的ToM:Sat Sep 22 00:30:00 CST 2018
util.CountTimeGap 兩個時間之間的分鐘差gap為:1418
1418
這裡主要是計算兩個時間字串對應的時間差(分鐘單位)多少輸入的12:52:16,12:30:32都變成了00:52:16,00:30:00.
原因:
new SimpleDateFormat("格式"),的引數格式 yyyy-MM-dd hh:mm, 小時打成了小寫的hh
HH是24小時制,hh是12小時制
此外:提醒下,SimpleDateFormat是執行緒不安全的,推薦為每個執行緒建立單獨的format例項。如果多執行緒併發訪問同一個format例項,必須加同步操作。