在 JDK 1.1 中,所有其他 mutator 都被弃用了,那么为什么setTime()
保留原样呢?当然java.util.Calendar
- 操作日期的正确方法 - 可以java.util.Date
根据需要使用java.util.Date(long)
构造函数创建新实例吗?
问问题
1492 次
3 回答
7
那些被弃用的位Date
是那些与日历相关的位(即日、月、年等)。您会注意到日历字段的访问器方法也已弃用,而不仅仅是修改器。
然而,作为毫秒值的表示仍然是工作方式Date
,并且与日历表示无关,因此它保持为未弃用状态。
于 2009-10-12T21:39:36.223 回答
4
其他突变器试图java.util.Date
用作日历,而不是即时时间,从 1970 年 1 月 1 日凌晨 12 点 UTC 开始包裹数毫秒。因此,不弃用一个 mutator 是有道理的。
当然,Date
/ Calendar
API 仍然很糟糕,您仍然应该尽可能使用Joda Time - 但我可以看到为什么该调用未被弃用。您不能在事后使类型不可变,这不是弃用的重点——重点是试图阻止人们将其用作“1976 年 6 月 19 日”等的存储。
于 2009-10-12T21:40:59.093 回答
2
因为该setTime
方法至少在逻辑上是正确的:setX
采用day、month等的方法没有任何意义:javaDate
是一个瞬间,因此day、hour、month等仅与Date
特定TimeZone
.
于 2009-10-12T21:40:31.823 回答