2012-09-28 37 views
0

這是一個愚蠢的問題,但我看不出我做錯了什麼。我想解析一個字符串,如24:00到一個日期對象。我知道如果我們使用kk:mm作爲日期格式,時間將從01:00到24:00(from the API)。但我無法得到下面的代碼工作。SimpledateFormat的解析方法java

String test = "24:00"; 
System.out.println("TEST: " + new SimpleDateFormat("kk:mm").parse(test)); 

輸出:

TEST: Thu Jan 01 00:00:00 GMT 1970 

預期輸出:

TEST: Thu Jan 01 24:00:00 GMT 1970 

編輯:

System.out.println("TEST: " + new SimpleDateFormat("k:mm:ss").format(new SimpleDateFormat("k:mm:ss").parse(test))); 

此打印TEST: Thu Jan 01 24:00:00 GMT 1970

但是爲什麼不在解析?

任何幫助感激

+0

嘗試通過「kk:mm」輸出「Thu Jan 01 00:00:00 GMT 1970」,你會看到:) – Fildor

+0

@Fildor of course,它的工作方式。但爲什麼不解析? – PermGenError

+0

它確實有效。但DateTime對象不能包含「24:00」。現在是00:00 - 23:59。當用「k」格式化時,它會在24:00輸出00:00,但內部仍然是00:00。這有點像使用AM/PM或24小時制。內部表示相同 - 不同的輸出。 – Fildor

回答

5

的Date.toString()方法被默認爲HH:MM。使用SimpleDateFormat輸出它並解析它。

+0

我不想要一個字符串我想要一個日期對象 – PermGenError

+1

@ chaitanya10:他們的日期是一樣的,這只是一個問題,你想如何輸出格式。 – Keppil

+1

Date對象使用long來表示時間:1970-01-01以來的毫秒數。當你解析它時,你會得到一個具有該數字的日期對象。格式化將該數字轉換爲可讀的字符串。您可以要求將字符串格式化爲午夜=「00:00」,「24:00」或「12:00 AM」。它們都是同一件事的不同表示。由於你沒有提供日期,00:00 = 24:00 – jalynn2