为什么'(30 Minutes)'
类不是YearMonth
不是临时的?
这似乎很奇怪,因为两个类的含义几乎相同。
我建议不要在使用Temporal接口的任何地方使用MonthDay,但也许有更好的理由。
答案 0 :(得分:9)
这是阅读MonthDay
文档的问题,这要感谢davidxxx和其他人找到正确的报价:
此类实现
TemporalAccessor
而不是Temporal
。这是 因为无法定义2月29日有效还是无效 并非没有外部信息,就无法实施 正负。与此相关,MonthDay
仅提供对查询的访问 并设置字段MONTH_OF_YEAR
和DAY_OF_MONTH
。
您可以与Temporal
的文档中的这段代码一起阅读:
这是日期,时间和偏移量对象的基本接口类型, 足够完整,可以使用加号和减号进行操作。
他们不想为MonthDay
定义正负。例如,因为目前尚不清楚2月28日加上1天是什么日子。某些年份是2月29日,其他年份是3月1日。
相比之下,向YearMonth
添加一个月或一年总是可以得到明确且毫不奇怪的结果。
链接