Java日期与日历

有人可以提供有关DateCalendar类型的最新“最佳做法”建议。

在编写新代码时,是否最好始终支持Calendar over Date ,或者是否存在Date是更合适的数据类型的情况?


日期是一个更简单的类,主要出于向后兼容的原因。 如果您需要设置特定日期或进行日期算术,请使用日历。 日历还处理本地化。 Date的上一个日期操作函数已被弃用。

就个人而言,我倾向于在有选择时使用毫秒中的任意一个时间(或适当的长时间)或日历。

Date和Calendar都是可变的,这在使用API​​时往往会出现问题。


新代码(如果您的政策允许第三方代码)的最佳方式是使用乔达时间库。

日期和日历都具有如此多的设计问题,既不是新代码的良好解决方案。


  • DateCalendar实际上是相同的基本概念(两者都代表即时时间,并且是基础long值的包装)。

  • 人们可能会认为Calendar实际上比Date timeZone ,因为它似乎提供了有关诸如星期几和时间之类事情的具体事实,而如果您更改其timeZone属性,那么具体会变成blancmange! 由于这个原因,这两个对象都不是真正有用的年度或日期的存储。

  • 仅将Calendar用作计算器,当给定DateTimeZone对象时,它将为您执行计算。 避免将它用于应用程序中的属性输入。

  • 使用SimpleDateFormatTimeZoneDate一起生成显示字符串。

  • 如果你觉得冒险使用Joda-Time,虽然它是不必要的复杂的恕我直言,并且很快在任何情况下都会被JSR-310数据API取代。

  • 我之前已经回答说,推出自己的YearMonthDay类并不困难,该类使用Calendar下的Calendar进行日期计算。 我对这个建议感到低落,但我仍然相信这是一个有效的建议,因为对于大多数使用情况来说,Joda-Time(和JSR-310)确实太复杂了。

  • 链接地址: http://www.djcxy.com/p/3121.html

    上一篇: Java Date vs Calendar

    下一篇: Detecting an "invalid date" Date instance in JavaScript