從我的json結果中返回下面的「關閉時間」的確切字符串。它似乎是在24小時的時間格式。我做了一些周圍的搜索,發現它不是所需格式的HH:MM:SS。什麼是將此轉換爲上午12點上午時間的有效方法。 Thanks.`將字符串在24小時內轉換爲12小時上午下午時間
String closingTime = "2100";
//Desired output: String closingTime = "9:00 pm"
從我的json結果中返回下面的「關閉時間」的確切字符串。它似乎是在24小時的時間格式。我做了一些周圍的搜索,發現它不是所需格式的HH:MM:SS。什麼是將此轉換爲上午12點上午時間的有效方法。 Thanks.`將字符串在24小時內轉換爲12小時上午下午時間
String closingTime = "2100";
//Desired output: String closingTime = "9:00 pm"
我建議解析時間到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);
接受的答案也可以正常工作,但是自從時間轉換爲日曆對象以來,您的方法是最有用的。我有一些補充添加。我會在你的答案下面編輯。謝謝。 – user3144836
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()));
}
那麼''2100「'的輸出是多少? – MrLore
期望的輸出是晚上9點。謝謝 – user3144836
那麼你所說的'HH:MM:SS'的格式是什麼意思? 2100是下午9點。 – MrLore