2014-05-25 59 views
2

從我的json結果中返回下面的「關閉時間」的確切字符串。它似乎是在24小時的時間格式。我做了一些周圍的搜索,發現它不是所需格式的HH:MM:SS。什麼是將此轉換爲上午12點上午時間的有效方法。 Thanks.`將字符串在24小時內轉換爲12小時上午下午時間

String closingTime = "2100"; 
//Desired output: String closingTime = "9:00 pm" 
+0

那麼''2100「'的輸出是多少? – MrLore

+0

期望的輸出是晚上9點。謝謝 – user3144836

+0

那麼你所說的'HH:MM:SS'的格式是什麼意思? 2100是下午9點。 – MrLore

回答

1

我建議解析時間到Calendar對象。這使得它非常容易實際上做的東西給定,而不僅僅是用它處理爲一個字符串

Calendar time = Calendar.getInstance(); 

//Calendar.HOUR_OF_DAY is in 24-hour format 
time.set(Calendar.HOUR_OF_DAY, closingTime.substring(0,2)); 

time.set(Calendar.MINUTE, closingTime.substring(2,4)); 

//Calendar.HOUR is in 12-hour format 
System.out.print(time.get(Calendar.HOUR) + ":" + time.get(Calendar.MINUTE) + " " + time.get(Calendar.AM_PM)); 

如果你給它「2100」上面的代碼會打印出「9:00 PM」的時候,但是內部的數據存儲爲millis,因此如果需要的話,您可以使用它來做更多的事情。

編輯 上面的代碼是不正確的,更像是僞代碼,由提問者,誰建議採取以下,更完整,工作代碼注意:

String closingTime = "2101"; 
//getInstance() will return the current millis, so changes will be made relative to the current day and time 
Calendar time = Calendar.getInstance(); 
// Calendar.HOUR_OF_DAY is in 24-hour format 
time.set(Calendar.HOUR_OF_DAY, Integer.parseInt(closingTime.substring(0, 2))); 

// time.get(Calendar.MINUTE) returns the exact minute integer e.g for 10:04 will show 10:4 
// For display purposes only We could just return the last two substring or format Calender.MINUTE as shown below 
time.set(Calendar.MINUTE, Integer.parseInt(closingTime.substring(2, 4))); 
String minute = String.format("%02d", time.get(Calendar.MINUTE)); 

// time.get(Calendar.AM_PM) returns integer 0 or 1 so let's set the right String value 
String AM_PM = time.get(Calendar.AM_PM) == 0 ? "AM" : "PM"; 

// Calendar.HOUR is in 12-hour format 
System.out.print("...\n" + time.get(Calendar.HOUR) + ":" + minute + " " + AM_PM); 
+0

接受的答案也可以正常工作,但是自從時間轉換爲日曆對象以來,您的方法是最有用的。我有一些補充添加。我會在你的答案下面編輯。謝謝。 – user3144836

0
public static Date getDateFromString(String format, String dateStr) { 

     DateFormat formatter = new SimpleDateFormat(format); 
     Date date = null; 
     try { 
      date = (Date) formatter.parse(dateStr); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return date; 
    } 

/// //////////////////

public static String getCurrentDate(String format) { 
     SimpleDateFormat sdfFrom = new SimpleDateFormat(format); 
     Calendar currentTime = Calendar.getInstance(); 
     return (sdfFrom.format(currentTime.getTime())); 
    } 
相關問題