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