4

在 JDK 1.1 中,所有其他 mutator 都被弃用了,那么为什么setTime()保留原样呢?当然java.util.Calendar- 操作日期的正确方法 - 可以java.util.Date根据需要使用java.util.Date(long)构造函数创建新实例吗?

4

3 回答 3

7

那些被弃用的位Date是那些与日历相关的位(即日、月、年等)。您会注意到日历字段的访问器方法也已弃用,而不仅仅是修改器。

然而,作为毫秒值的表示仍然是工作方式Date,并且与日历表示无关,因此它保持为未弃用状态。

于 2009-10-12T21:39:36.223 回答
4

其他突变器试图java.util.Date用作日历,而不是即时时间,从 1970 年 1 月 1 日凌晨 12 点 UTC 开始包裹数毫秒。因此,不弃用一个 mutator 是有道理的。

当然,Date/ CalendarAPI 仍然很糟糕,您仍然应该尽可能使用Joda Time - 但我可以看到为什么该调用未被弃用。您不能在事后使类型不可变,这不是弃用的重点——重点是试图阻止人们将其用作“1976 年 6 月 19 日”等的存储。

于 2009-10-12T21:40:59.093 回答
2

因为该setTime方法至少在逻辑上是正确的:setX采用daymonth等的方法没有任何意义:javaDate是一个瞬间,因此dayhourmonth等仅与Date特定TimeZone.

于 2009-10-12T21:40:31.823 回答