java.util.Date 和 java.util.Calendar 是否已弃用?
Are java.util.Date and java.util.Calendar deprecated?
似乎新的 java.time
API 提供了 java.util.Date
的一切,甚至更多。
当更新的 java.time
API 自 Java 8 以来存在时,是否有任何理由使用 java.util.Date
?
是否应该完全避免 java.util.Date
和 java.util.Calendar
?
简短回答: 新的 API java.time
比旧世界的 java.util.Date
和 java.util.Calendar
要好得多。所以是的,在新代码中应该首选新 API。
快速概览: 有一次我为各种日期时间库编写了 comparison of features in table form。几乎没有 java.time
缺失但存在于旧世界的特征:
- 可配置gregorian/julian转换
- 打印基于class
FieldPosition
(用于Swing组件FormattedTextField
)
关于弃用: 尽管自 Java 1.1 以来 java.util.Date
的大部分内容已被弃用,但 class 本身(以及 java.util.Calendar
, too) 也没有被正式弃用,只是被宣布为事实上的遗产。旧 classes 的支持对于 向后兼容遗留代码 的目标仍然很重要。所以 Oracle 很可能在未来的任何时候都不会停止支持。但也许 Oracle 会应用更多 sophisticated deprecation strategies。
未来的发展: 有趣的是,Java-8的发布不仅包含了全新的date/time-API(java.time
) 但也看到了 java.util.Calendar
的一些增强功能,例如 Calendar.Builder or SHORT_STANDALONE 等。好吧,我只能推测,但这似乎也表明 Oracle 不愿意停止对旧 [=51] 的支持=]在不久的将来。
似乎新的 java.time
API 提供了 java.util.Date
的一切,甚至更多。
当更新的 java.time
API 自 Java 8 以来存在时,是否有任何理由使用 java.util.Date
?
是否应该完全避免 java.util.Date
和 java.util.Calendar
?
简短回答: 新的 API java.time
比旧世界的 java.util.Date
和 java.util.Calendar
要好得多。所以是的,在新代码中应该首选新 API。
快速概览: 有一次我为各种日期时间库编写了 comparison of features in table form。几乎没有 java.time
缺失但存在于旧世界的特征:
- 可配置gregorian/julian转换
- 打印基于class
FieldPosition
(用于Swing组件FormattedTextField
)
关于弃用: 尽管自 Java 1.1 以来 java.util.Date
的大部分内容已被弃用,但 class 本身(以及 java.util.Calendar
, too) 也没有被正式弃用,只是被宣布为事实上的遗产。旧 classes 的支持对于 向后兼容遗留代码 的目标仍然很重要。所以 Oracle 很可能在未来的任何时候都不会停止支持。但也许 Oracle 会应用更多 sophisticated deprecation strategies。
未来的发展: 有趣的是,Java-8的发布不仅包含了全新的date/time-API(java.time
) 但也看到了 java.util.Calendar
的一些增强功能,例如 Calendar.Builder or SHORT_STANDALONE 等。好吧,我只能推测,但这似乎也表明 Oracle 不愿意停止对旧 [=51] 的支持=]在不久的将来。