繁体   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