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
が Date の場合Calendar.getInstance(Locale)
は が使用され、デフォルトのタイムゾーンでカレンダーが作成されます。引数が の場合はCalendar
、カレンダーのタイムゾーンが使用されます。さらに、これについての明示的な説明は見つかりませんでした。そのメソッドは非公開であるため、この動作が変わらないと想定することは不可能です。
于 2012-10-16T12:41:40.083 に答える