[英]Bug in java.time.Duration
在JavaDoc的parse()
:
ASCII字母“T” 必须出现在第一次出现(如果有) 小时 , 分钟或秒节之前。
这意味着无论何时使用H
, M
或S
,都必须包含T
但是这些例子是错误的:
"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"
Duration.parse
使用的正则表达式是:
private static final Pattern PATTERN =
Pattern.compile("([-+]?)P(?:([-+]?[0-9]+)D)?" +
"(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?",
Pattern.CASE_INSENSITIVE);
输入P-6H3M
与此正则表达式不匹配。 如果改为
"(T?(?:([-+]?[ ...
在第四行(注意T
之后的?
),示例匹配(在http://regexpal.com/上测试)。
所以看起来你发现代码和JavaDoc之间存在不一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.