2013-07-28 305 views
0

我正在從服務(Factual)中檢索地點的小時數據。它以24小時的格式顯示給我,我需要以12小時的格式顯示它。特定日期的數據如下所示:如何將小時數據從24小時制改爲12小時制?

"sunday\":[[\"12:00\",\"21:30\"]] 

我可以成功從JSON檢索小時。然後,使用SimpleDateFormat,我可以將該字符串解析爲一個Date對象。但是,我不知道如何將它們轉換爲12; - 小時格式,以便我可以將它們顯示爲「12:00 - 9:30」或「12:00 pm - 9:30 pm」,而不是「12: 00 - 21:30「。

我該如何去做這件事?謝謝!

編輯:

通過解析小時使用SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm a");的字符串(如「12:00」),我從JSON一個錯誤,指出該值是不可解析。如果我只使用SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm");,那麼就沒有錯誤,但我無法以12小時格式顯示內容。

回答

1

如果您看簡單的日期格式語法文檔,您會發現'h'用於12小時的時間,'a'用於AM/PM。在將它們通過dateformatters之前,您需要使用子字符串提取兩次。 http://developer.android.com/reference/java/text/SimpleDateFormat.html

SimpleDateFormat in = new SimpleDateFormat("<input format goes here>"); 
Date d = in.parse(INPUT_DATE_STRING); 
SimpleDateFormat out = new SimpleDateFormat("<output format goes here>"); 
String outDate = out.format(d); 
+0

是的,我知道,和我使用這個分析是這樣:\t \t的SimpleDateFormat SDF2 =新的SimpleDateFormat( 「HH:MM」);如果我使用\t \t SimpleDateFormat sdf2 = new SimpleDateFormat(「hh:mm a」);那麼它告訴我,我試圖解析的值(即12:00)是不可分的格式。 – user2163853

+0

您應該使用1格式的原始日期讀取日期對象,然後使用其他格式化程序將其輸出爲您的格式。我已經用你應該使用的那種代碼更新了我的答案。 – Robadob

+1

謝謝!得到它了。很有幫助。 – user2163853

0

試試這個:

//Char sequence for a 12 hour format. 
CharSequence DEFAULT_FORMAT_12_HOUR = "hh:mm a"; 
//Char sequence for a 24 hour format. 
CharSequence DEFAULT_FORMAT_24_HOUR = "kk:mm"; 

//date is the Date object. Look for more functions in format. 
DateFormat.format(DEFAULT_FORMAT_12_HOUR, date); 

讓我知道,如果它的工作原理。如果您有任何問題,請檢查您發送的日期。

//This should give you the default time on the device. To show that it works. 
DateFormat.format(DEFAULT_FORMAT_12_HOUR, Calendar.getInstance()); 
相關問題