gpt4 book ai didi

java - 解析带有闰秒的持续时间,如 00 :00:60

转载 作者:行者123 更新时间:2023-11-30 02:02:10 25 4
gpt4 key购买 nike

如何解析闰秒到秒的持续时间?

例如,我们从另一个服务接收到以下持续时间 00:00:60,这意味着 1 分钟,但 Java 8 DateTimeFormatter.ofPattern("HH:mm:ss[.SSS]") 会抛出异常

java.time.format.DateTimeParseException:无法解析文本“00:00:60”:SecondOfMinute 值无效(有效值 0 - 59):60

这是有道理的,因为 Java 使用的 ISO 标准中没有 60 秒的概念。

我想避免使用 String::replace (如类似情况的其他 SO 答案中所建议的)并尽可能避免使用外部库。

这是抛出异常的当前代码:

private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss[.SSS]");

public static Integer parseToSeconds(String durationText) {

return LocalTime.parse(durationText, TIME_FORMATTER).toSecondOfDay();
}

最佳答案

这就是我解决问题的方法:

private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss[.SSS]");

public static long parsesToSeconds(String durationText) {
Duration timeSum = Duration.ZERO;
// Reformat to ISO 8601
durationText = durationText.replaceFirst("(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d+)?)", "PT$1H$2M$3S");

timeSum = timeSum.plus(Duration.parse(durationText));

return timeSum.getSeconds();
}

归功于 Ole V.V.他的答案在这里:https://stackoverflow.com/a/52315938/2240409

关于java - 解析带有闰秒的持续时间,如 00 :00:60,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494526/

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