关于java.time.DayOfWeek与Month增减方法文档用词的疑问
关于java.time.DayOfWeek和Month类加减方法文档描述差异的解释
本质原因:两类的语义边界完全不同
java.time.DayOfWeek是一周内的日期枚举,只对应周一到周日这7天,它的循环边界是“周”,和“年”根本不沾边。java.time.Month是一年内的月份枚举,对应1到12月,循环边界自然是“年”。
DayOfWeek文档的表述问题
你看到的DayOfWeek.minus(long)里“绕回年份的起始点”绝对是翻译失误——实际逻辑是周内循环:比如周一减1天就是周日,周日加1天就是周一,所有操作都只会在一周的7天里转圈,和年份没有任何关系。文档里的“年份”明显是翻译时混淆了概念,应该和plus()方法描述的“绕回周的结束点”对应起来才对。
Month类的逻辑为啥用“year”
Month的加减本来就是针对年份内的月份循环,比如1月减1就到12月(上一年的最后一个月),12月加1就到1月(下一年的第一个月),用“year”作为边界描述完全符合它的语义,和DayOfWeek的周内循环逻辑是一个道理,只是范围从“周”变成了“年”。
内容的提问来源于stack exchange,提问作者sleepingraven
相关产品推荐
相关产品推荐

