簡體   English   中英

將字符串時間轉換為本地時間以進行比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM