gpt4 book ai didi

java - Java 中的 ISO 持续时间格式验证

转载 作者:行者123 更新时间:2023-12-05 05:23:38 24 4
gpt4 key购买 nike

我用谷歌搜索但无法找到任何好的解决方案来验证输入字符串对于 ISO Duration Format 是否正确,如果有人有任何想法或解决方案可能正在使用正则表达式或函数,将会有很大帮助。

注意:持续时间的格式为 [-]P[n]DT[n]H[n]M[n][.frac_secs]S,其中 n 指定元素的值(例如,4H 是 4 小时)。这表示 ISO 持续时间格式的子集,任何其他持续时间字母(包括有效的 ISO 字母,例如 Y 和 M)都会导致错误。

Example 1,
input string = "P100DT4H23M59S";
expected output = 100 04:23:59.000000

Example 2,
input string = "P2MT12H";
expected output = error, because the month designator, '2M', isn't allowed.

Example 3,
input string = "100 04:23:59";
expected output = 100 04:23:59.000000

.

最佳答案

java.time.Duration

java.time 类使用 ISO 8601解析/生成文本时的默认格式。

使用 Duration类。

调用Duration#parse方法。 DateTimeParseException 的陷阱遇到错误输入时抛出。

String input = "P100DT4H23M59S";
try
{
Duration duration = Duration.parse( input );
}
catch ( DateTimeParseException e )
{
System.out.println( "ERROR - Faulty input." );
}

Java 中的 Duration 类代表一个独立于时间轴的时间跨度,时间范围为通用的 24 小时天(不是日历日)、小时、分钟和秒。 (对于日历日,请参阅 Period 类。)

因此,Duration#parse 会自动拒绝您不需要的年、月和周输入。

String input = "P2MT12H";
try
{
Duration duration = Duration.parse( input );
}
catch ( DateTimeParseException e )
{
System.out.println( "ERROR - Faulty input." );
}

运行时:

ERROR - Faulty input.

关于java - Java 中的 ISO 持续时间格式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com