为什么如果我使用String.format(Date)
它会在默认时区打印日期,但是当我使用String.format(Calendar)
它时会在日历的时区打印。实际上,后者是我需要的,但我可以确定这种行为会持续存在吗?
问问题
210 次
1 回答
1
正如我从 String.format 的实现中发现的那样(至少对于 JDK 1.5,它printDateTime(Object, Locale)
包含这样的代码:
} else if (arg instanceof Date) {
// Note that the following method uses an instance of the
// default time zone (TimeZone.getDefaultRef().
cal = Calendar.getInstance(l);
cal.setTime((Date)arg);
} else if (arg instanceof Calendar) {
cal = (Calendar) ((Calendar)arg).clone();
cal.setLenient(true);
} else {
所以如果参数String.format
是日期,Calendar.getInstance(Locale)
则使用默认时区创建日历,如果参数是Calendar
则使用日历的时区。此外,我没有找到任何明确的描述,并且该方法是私有的,所以不可能假设这种行为不会改变。
于 2012-10-16T12:41:40.083 回答