我遇到了Java 1.7的GregorianCalender问题.我知道转移到Java 8或使用Joda可能会解决我的问题,但遗憾的是这不是一个选项.
所以我试图添加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 ) );
}
Run Code Online (Sandbox Code Playgroud)
它将失败:
java.lang.AssertionError: expected:<22> but was:<23>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |