繁体   English   中英

使用JodaTime将HH:mm(每分钟两位)解析为LocalTime

[英]Parsing HH:mm (with two digits minute) to LocalTime with JodaTime

我需要解析“ 10:10”之类的字符串并创建一个LocalTime对象。 如果字符串类似于“ 10:1”,则解析应引发IllegalArgumentException。 (分钟必须为两位数)

所以我做了这个

String time = "10:1";
LocalTime myLT;
DateTimeFormatter dtf = DateTimeFormat.forPattern("HH:mm");
myLT = dtf.parseLocalTime(time);

我也尝试了DateTimeFormatter

DateTimeFormatter dtf = new DateTimeFormatterBuilder().appendHourOfDay(2)
.appendLiteral(":").appendMinuteOfHour(2).toFormatter();

但是“ 10:1”仍会转换...该怎么做?

使用DateTimeFormatBuilder的 appendFixedDecimal方法。 您传递numDigits参数,该参数是固定位数而不是最低要求。

在您的情况下,它就像(我自己没有测试过)

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
    .appendFixedDecimal(DateTimeFieldType.clockhourOfDay(),2)
    .appendFixedDecimal(DateTimeFieldType.minuteOfHour(),2)
    .toFormatter()
    .withZoneUTC();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM