-2
我遇到了Java 1.7的GregorianCalender问题。我知道转移到Java 8或使用Joda可能会解决我的问题,但不幸的是,这不是一个选项。Java 1.7 GregorianCalendar计算错误日期
所以我想增加365天来计算一个结束日期(这可能看起来很愚蠢,增加365天,而不仅仅是增加一年,但这是我的客户要求,甚至在问他很多次后,他想要坚持与它,因为他想忽略闰年)。
总的来说,所有的工作都很好,但在下面的单元测试中,它并不符合我和我的期望。我现在重新计算了几次,并使用各种工具来检查我的结果,但我无法确认java的计算结果。
这里是我的单元测试,这将失败,因为它返回一个错误的日期:
@Test
public void test(){
// Get a Gregorian Calendar
Calendar cal = GregorianCalendar.getInstance();
// Remove whatever was stored previously
cal.clear();
// Set calendar to 2004-10-23
cal.set(2004, Calendar.OCTOBER, 23);
// Add 365 days
cal.add(Calendar.DAY_OF_YEAR, 365);
// Calendar should be at 2005-10-22 now
Assert.assertEquals(2005, cal.get(Calendar.YEAR));
Assert.assertEquals(Calendar.OCTOBER, cal.get(Calendar.MONTH));
Assert.assertEquals(22, cal.get(Calendar.DAY_OF_MONTH));
}
它将失败:
java.lang.AssertionError: expected:<22> but was:<23>
难道我做错了什么?