[英]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.