gpt4 book ai didi

java - 如何处理 java.time 中的完整周期?

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:22 24 4
gpt4 key购买 nike

Periodjava.time 中上课仅处理面向日期的部分:年、月、日。

关于时间部分:小时、分钟、秒?

我们如何解析和生成 ISO 8601 中定义的完整周期的字符串表示形式, PnYnMnDTnHnMnS?例如,一天半:P1DT12H。一学年为九个月,P9M。每年我都会有两周零三天的假期,P17D。客户入住酒店房间 2 天 17 个半小时,P2DT17H30M

PeriodJoda-Time 中上课处理全期。为什么不在 java.time 中?还有其他机制吗?

最佳答案

在 Java SE 8 中,如果需要,应用程序有责任创建一个链接 PeriodDuration 的类。

请注意,Duration 包含秒数,而不是单独的秒数、分钟数和小时数。秒数可以超过 24 小时,因此 Duration 可以表示“天”。但这是固定的 24 小时制。相比之下,“Period 中的“天”的表示是描述性的,并考虑了夏令时。Period 的状态由三个独立的字段组成 - 日、月和年.

请记住,“客户入住酒店房间 2 天 17 个半小时,P2DT17H30M”可能会因 DST 切换而变得复杂。分别使用 PeriodDuration 事情很清楚 - Period 受夏令时切换影响,而 Duration 则不受。

在设计方面,原始的 java.time Period 确实包括小时、分钟和秒。然而,这导致需要许多方法和复杂的 Javadoc 来描述规范化和 DST 的所有可能性。通过分离概念,每个概念与时间线的交互更加清晰。请注意,这两个类还与 SQL 设计相关(“年到月”和“日到秒”概念)。

目前没有计划在该领域为 Java SE 9 添加新类,但不能完全排除,因为 XML/ISO-8601 允许单一组合表示。

关于java - 如何处理 java.time 中的完整周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366154/

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