java - 为什么期间不具有可比性

标签 java date comparison

为什么java.time.Period没有实现java.lang.Comparable接口(interface)?

简单的问题,但答案可能不那么简单:其他常用的时间量java.time.Duration确实实现Comparable ,所以我认为设计师可能会考虑过它,但决定不这样做。

最佳答案

因为只有几个月可以标准化(),而不是几天。 IE。 P30D 可能小于、等于或大于 P1M,具体取决于它是否应用于一月、二月或三月。

实际上,equals 没有进行任何标准化,因此 P30D 不等于 P1M。甚至 P1Y 也不等于 P12M,这可能会令人惊讶。

如果您需要比较时期,您需要一种方法来处理 - 在某些情况下 - 您无法决定。或者您使用 30 天的标准月份,这是财务计算中常见的简化。

顺便说一句:这确实应该在 Period#normalized() 的 JavaDoc 中。

关于java - 为什么期间不具有可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192249/

相关文章:

java - 将字符的 ArrayList 转换为字符串?

java - 是否可以在 jax-ws web-service 中动态添加参数?

javascript - 数据表排序不适用于 dd-mm-yyyy 格式

c++ - 跟踪排序中执行的比较

Golang 按日期和时间查找最近的文件

java - 使用 Spring MVC 流媒体的正确方法是什么

java - JAXB2.0 -XJC编译问题

Java Calendar.WEEK_OF_YEAR 返回该月中的第几周

javascript - EXTJS Ext.util.Format.date 自动日期转换

python - 具有较小数据集的异常值检测方法