

- Date(遗留的"上帝对象")
在旧版设计中,Date试图同时承担"时间戳"、"日历日期"和"格式化"等多重职责,导致其语义边界极其模糊。例如,Date的getYear()方法返回的是"当前年份减去1900"的值,且月份索引从 0 开始,这种反直觉的设计极易引发逻辑错误。 - LocalDate / LocalTime / LocalDateTime(高内聚的领域模型)
Java 8 引入了java.time包,严格遵循"单一职责原则",将时间语义拆解为上述三个不可变对象(Immutable)。它们均基于 ISO-8601 国际标准,且天然具备线程安全性,彻底规避了旧版Date在多线程环境下的并发隐患。