gpt4 book ai didi

java - 我需要一个可以处理任何有效的 W3C ISO 8601 日期/时间字符串的 java.time 解析器

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

似乎没有内置的 java.time 解析器可以处理任何有效的 W3C ISO 8601日期/时间字符串。

它应该返回一个 ZonedDateTime,缺失的字段设置为 0,如 W3C 规范中指定的那样。

这似乎是一个常见的用例,我很惊讶它不是标准库的一部分,而且我想它已经在库外解决了多次。谁有解决方案?

最佳答案

W3C ISO 8601

That documentISO 8601 的 self 声明的“个人资料”标准,而不是标准本身。

This seems to be such a common use case, im surprised its not part of the standard library

java.time 类在解析文本时确实默认使用 ISO 8601 格式。

没有通用的解析器,因为上下文很重要。年、年月、日期、时间、带时间的日期、带偏移量的时间的日期、带时区的时间的日期,都是不同的动物。您通常不会期望不同类型的值是任意到达的。

如果您确实有这样一个任意类型的集合,那么只需执行一系列解析尝试即可。 DateTimeParseException 异常的陷阱。如果使用一个 java.time 类进行解析失败,请转到下一个 java.time 类。

你说:

It should return a ZonedDateTime, with missing fields set to 0 as specified in the W3C spec.

如何将仅限年份的值转换为 ZonedDateTime 对象?月份和日期值应该是多少?那里不能接受零。什么时区?您需要指定所需的区域。什么时间?时间归零不起作用,因为某些区域并非所有日子都从 00:00:00 开始。

由于这些原因,通用解析器是不可能的。您需要根据您的特定应用程序的业务规则对您的特定输入数据执行解析。

通过使用 DateTimeFormatterBuilder 类建立默认值,您可以更接近您想要的通用解析器。参见 Answer by Avinash .

关于java - 我需要一个可以处理任何有效的 W3C ISO 8601 日期/时间字符串的 java.time 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67640094/

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