我需要从字符串中解析Durations。 Java 8提供了一种以ISO-8601标准为基础的方法:
Duration.parse("p10d"); // parses as ten days
Duration.parse("pt1h"); // parses as one hour
正如该标准指出的那样,“通过相互同意可以省略'T'字符”,Durations.parse()的一些Javadoc示例省略了
T
。根据他们的说法,以下表达式应解析为“-6小时+3分钟”:"P-6H3M"
但是我发现所有省略
T
的表达式都会抛出一个DateTimeParseException
。那是parse()
方法中的错误还是我错过了什么? 最佳答案
在parse()
的JavaDoc中:
这意味着无论何时使用T
,H
或M
,都必须包括S
。
这些示例是错误的:
"P-6H3M" -- parses as "-6 hours and +3 minutes"
"-P6H3M" -- parses as "-6 hours and -3 minutes"
"-P-6H+3M" -- parses as "+6 hours and -3 minutes"