3 回答
TA贡献1805条经验 获得超10个赞
java.util.Calendar
// I "know" there are 12 monthsString[] monthNames = new String[12]; // and populate...String name = monthNames[calendar.get(Calendar.MONTH)];
令人惊讶的基数(1900年为日期的年份基数,不可否认为不推荐的构造函数;0作为两个年份的月份基数) 可变性-使用不可变类型使其 多
更简单地处理真正有效的东西 价值
一组不够的类型:拥有 Date
和 Calendar
作为不同的事物,但是“本地”与“分区”值的分离以及日期/时间与时间的分离是缺失的。 一个API,它导致使用神奇常量的丑陋代码,而不是明确命名的方法。 一个很难推理的API-所有关于什么时候被重新计算的业务等等。 使用无参数构造函数默认为“Now”,这将导致硬测试代码。 这个 Date.toString()
实现,它总是使用系统本地时区(这使以前许多堆栈溢出用户感到困惑)
TA贡献1998条经验 获得超6个赞
java.util.Calendar
// I "know" there are 12 monthsString[] monthNames = new String[12]; // and populate...String name = monthNames[calendar.get(Calendar.MONTH)];
令人惊讶的基数(1900年为日期的年份基数,不可否认为不推荐的构造函数;0作为两个年份的月份基数) 可变性-使用不可变类型使其 多
更简单地处理真正有效的东西 价值
一组不够的类型:拥有 Date
和 Calendar
作为不同的事物,但是“本地”与“分区”值的分离以及日期/时间与时间的分离是缺失的。 一个API,它导致使用神奇常量的丑陋代码,而不是明确命名的方法。 一个很难推理的API-所有关于什么时候被重新计算的业务等等。 使用无参数构造函数默认为“Now”,这将导致硬测试代码。 这个 Date.toString()
实现,它总是使用系统本地时区(这使以前许多堆栈溢出用户感到困惑)
添加回答
举报