mm:ss:SSS 到 LocalTime Kotlin/Java 类型的字符串
String of type mm:ss:SSS to LocalTime Kotlin/Java
我有一个时间字符串 03:02:111
,它的模式是 mm:ss:SSS
。我想将其转换为 LocalTime 对象。
毫米 -> 分钟
ss -> 秒
SSS -> 米尔斯
简单例子:
val time = "03:02:111"
val formatter = DateTimeFormatter.ofPattern("mm:ss:SSS")
val convertedTime = LocalTime.parse(time, formatter)
print(convertedTime.toString())
我得到以下异常:
java.time.format.DateTimeParseException: Text '03:02:111' could not be
parsed: Unable to obtain LocalTime from TemporalAccessor:
{MicroOfSecond=111000, MilliOfSecond=111, NanoOfSecond=111000000,
SecondOfMinute=2, MinuteOfHour=3},ISO of type java.time.format.Parsed
有人可以解释为什么这不起作用吗?我也检查了两次模式。
问题是你没有定义小时。这意味着你必须构建一个更智能的格式化程序,告诉它哪个小时应该是默认值:
fun main(args: Array<String>) {
val time = "03:02:111"
val formatter = DateTimeFormatterBuilder()
.appendPattern("mm:ss:SSS")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.toFormatter()
val convertedTime = LocalTime.parse(time, formatter)
print(convertedTime.toString())
}
当然,这只有在分钟小于 60 时才有效。如果你没有这个保证,那么你就需要另一种方法了。
我有一个时间字符串 03:02:111
,它的模式是 mm:ss:SSS
。我想将其转换为 LocalTime 对象。
毫米 -> 分钟
ss -> 秒
SSS -> 米尔斯
简单例子:
val time = "03:02:111"
val formatter = DateTimeFormatter.ofPattern("mm:ss:SSS")
val convertedTime = LocalTime.parse(time, formatter)
print(convertedTime.toString())
我得到以下异常:
java.time.format.DateTimeParseException: Text '03:02:111' could not be parsed: Unable to obtain LocalTime from TemporalAccessor: {MicroOfSecond=111000, MilliOfSecond=111, NanoOfSecond=111000000, SecondOfMinute=2, MinuteOfHour=3},ISO of type java.time.format.Parsed
有人可以解释为什么这不起作用吗?我也检查了两次模式。
问题是你没有定义小时。这意味着你必须构建一个更智能的格式化程序,告诉它哪个小时应该是默认值:
fun main(args: Array<String>) {
val time = "03:02:111"
val formatter = DateTimeFormatterBuilder()
.appendPattern("mm:ss:SSS")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.toFormatter()
val convertedTime = LocalTime.parse(time, formatter)
print(convertedTime.toString())
}
当然,这只有在分钟小于 60 时才有效。如果你没有这个保证,那么你就需要另一种方法了。