Java日期与日历
有人可以提供有关Date和Calendar类型的最新“最佳做法”建议。
在编写新代码时,是否最好始终支持Calendar over Date ,或者是否存在Date是更合适的数据类型的情况?
日期是一个更简单的类,主要出于向后兼容的原因。 如果您需要设置特定日期或进行日期算术,请使用日历。 日历还处理本地化。 Date的上一个日期操作函数已被弃用。
就个人而言,我倾向于在有选择时使用毫秒中的任意一个时间(或适当的长时间)或日历。
Date和Calendar都是可变的,这在使用API时往往会出现问题。
新代码(如果您的政策允许第三方代码)的最佳方式是使用乔达时间库。
日期和日历都具有如此多的设计问题,既不是新代码的良好解决方案。
Date和Calendar实际上是相同的基本概念(两者都代表即时时间,并且是基础long值的包装)。
人们可能会认为Calendar实际上比Date更 timeZone ,因为它似乎提供了有关诸如星期几和时间之类事情的具体事实,而如果您更改其timeZone属性,那么具体会变成blancmange! 由于这个原因,这两个对象都不是真正有用的年度或日期的存储。
仅将Calendar用作计算器,当给定Date和TimeZone对象时,它将为您执行计算。 避免将它用于应用程序中的属性输入。
使用SimpleDateFormat和TimeZone和Date一起生成显示字符串。
如果你觉得冒险使用Joda-Time,虽然它是不必要的复杂的恕我直言,并且很快在任何情况下都会被JSR-310数据API取代。
我之前已经回答说,推出自己的YearMonthDay类并不困难,该类使用Calendar下的Calendar进行日期计算。 我对这个建议感到低落,但我仍然相信这是一个有效的建议,因为对于大多数使用情况来说,Joda-Time(和JSR-310)确实太复杂了。
下一篇: Detecting an "invalid date" Date instance in JavaScript
