[英]Convert a String time to a localtime to compare
我試圖弄清楚數學以驗證班次是否獲得正確的休息時間,當我查詢api時,得到以下響應:
"StartDate": "4/25/2018",
"EndTime": "8:30PM",
"StartDayNumber": 1,
"StartTime": "7:30PM",
"SegmentTypeName": "BREAK",
"EndDate": "4/25/2018",
"EndDayNumber": 1
我已經嘗試過使用LocalTime
各種嘗試,因此可以使用Duration
:
LocalTime start = LocalTime.parse(employeeShift.getJSONObject(ii).get("StartTime").toString(), DateTimeFormatter.ofPattern("HH:mm a"));
LocalTime end = LocalTime.parse(employeeShift.getJSONObject(ii).get("EndTime").toString());
我嘗試了多種方法將EndTime和StartTime轉換為本地時間。 但是我很困惑,我嘗試了各種格式化程序,包括日期,小時,但是我沒有找到包含am / pm的示例,我是否需要先轉換為24小時制?
我得到的錯誤:
java.time.format.DateTimeParseException:無法在索引0處解析文本“ 1:00 PM”
您只需要修復DateTimeFormatter
。 “ HH”是一天中的小時(值從0到23)。 要解析AM / PM小時,您需要使用“ hh”(am / pm的時鍾小時,值從1到12- 檢查javadoc )。 同樣,分鍾和AM / PM部分之間沒有空格,並且要解析一位數小時,您可以僅使用一個“ h”(它將接受一位或兩位數,這似乎與您的輸入匹配):
LocalTime.parse("7:30PM", DateTimeFormatter.ofPattern("h:mma", Locale.US));
我還使用了java.util.Locale
因為AM / PM字符串已本地化,並且如果我未指定字符串,則將使用JVM默認值-盡管對於大多數語言環境,都使用“ AM”和“ PM”產生諸如“ am”或其他字符串之類的語言的語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.