我有如下所述的junit测试:
Calendar cal = somecode.getDate();
assertEquals("1941-02-31-05:00", cal.toString);
这传递了我的本地机器,但由于时区标准差异而在沙盒中,cal.toString()的值出现为" 1941-02-31Z"。因此,断言不断失败。有没有人知道如何在两个地方进行此传递而不更改任何一台机器中的时区标准或格式。可能只是在代码中设置默认时区标准?
我无法从Java 6升级。因此,我需要在代码中找到解决方案。
答案 0 :(得分:2)
您可以使用setTimeZone
方法将时区设置为特定值。
但是,您也可能不应该依赖Calendar.toString()
的格式:
此方法仅用于调试目的,返回字符串的格式可能因实现而异。
您应该单独检查字段,而不是依赖字符串:
cal.setTimeZone(...);
assertEquals(1941, cal.get(Calendar.YEAR));
assertEquals(2, cal.get(Calendar.MONTH));
// ... etc.