以下代码在Android模拟器下无法通过断言:
TimeZone timezone = TimeZone.getTimeZone("Hongkong");
Locale locale = new Locale("zh", "HK");
Calendar calendar = Calendar.getInstance(timezone, locale);
calendar.set(Calendar.YEAR, 1979);
calendar.set(Calendar.MONTH, 4);
calendar.set(Calendar.DAY_OF_MONTH, 13);
calendar.set(Calendar.HOUR_OF_DAY, 4);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
df.setTimeZone(timezone);
String sDate = df.format(calendar.getTime());
int debug = calendar.get(Calendar.HOUR_OF_DAY);
Assert.assertEquals("Error datetime: " + sDate, 4, debug);
我发现,如果将 DAY_OF_MONTH 更改为 12,错误就消失了:calendar.set(Calendar.DAY_OF_MONTH, 12);
请注意,此问题在 JUnit 测试中不存在。(没有安卓)
最后,这个问题似乎在Android真机上可能不存在。
任何意见?