1Z0-826-JPN 対応
java.time(ZonedDateTime / DST)難易度 高無料

米国 America/New_York は 2026年3月8日 午前2:00 に夏時間(DST)へ切替(時計が2:00→3:00へ1時間進む)。次のコードの出力は?

1   import java.time.*;
2   public class Q7 {
3       public static void main(String[] a) {
4           ZoneId ny = ZoneId.of("America/New_York");
5           ZonedDateTime z =
6               ZonedDateTime.of(2026, 3, 7, 12, 0, 0, 0, ny);  // 3/7 12:00(切替前日の正午)
7           ZonedDateTime d = z.plusDays(1);    // 「1日」足す
8           ZonedDateTime h = z.plusHours(24);  // 「24時間」足す
9           System.out.println(d.getHour());
10          System.out.println(h.getHour());
11      }
12  }
  1. A12 改行 12
  2. B12 改行 13
  3. C13 改行 13
  4. D11 改行 12
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:B✓有資格者監修

解説

ZonedDateTime の加算メソッドは、操作する「時間軸」が2系統に分かれる。これが DST をまたぐと結果を分ける。

日・週・月・年系(plusDays など)=ローカル時間軸(local time-line)で計算する。「壁の時計を1日進める」イメージ。
3/7 12:00 +1日 → 3/8 12:00(DST 切替後でも、壁時計の“12:00”はそのまま)。getHour()=12。

時・分・秒系(plusHours など)=インスタント時間軸(instant time-line)で計算する。「実時間でちょうど24時間後」。
3/8 の 2:00→3:00 で1時間が“消える”ため、実時間24時間後の壁時計は25時間進んだように見え → 3/8 13:00。getHour()=13。

つまり 「1日」≠「24時間」。DST 切替日だけは plusDays(1) と plusHours(24) が壁時計で1時間ずれる。

各誤答が違う理由
  • AplusHours(24) もローカル時間軸だと誤解。時・分・秒系はインスタント時間軸なので、DST で1時間ずれて13になる。
  • CplusDays(1) までインスタント計算だと誤解。日・月・年系はローカル時間軸なので壁時計12:00を維持する。
  • D進む向き(春の繰り上げ=時計が進む)を逆(繰り下げ)に取った誤り。春のDSTは1時間“失う”ので壁時計はむしろ先へ。
ひっかけ: 「24時間 = 1日」という常識。ZonedDateTime では plusDays=ローカル軸(カレンダー)/plusHours=インスタント軸(実時間) で、DST 境界をまたぐと両者が分岐する(公式 Javadoc も「adding one day is not the same as adding 24 hours」と明記)。
実機確認の答え合わせ
出力:
12
13
(参考・完全な値)
plusDays(1)  → 2026-03-08T12:00-04:00[America/New_York]
plusHours(24)→ 2026-03-08T13:00-04:00[America/New_York]
※ どちらもオフセットは -04:00(EDT=夏時間)になっている点に注目。
✓有資格者(著者)による書き下ろし解説

有資格者(著者)が監修した問題は、すべて無料サンプルとして公開しています。買う前に、その全部を実際に解いて解説まで読めます。有料で追加される問題はAIが作成したもので、有資格者の監修は入っていません。

この問題集の作り方

  1. 問題と解説はAIが作成しています。有資格者(著者)が監修した問題は、無料サンプルとして公開している分だけです。有料で追加される問題に監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 解説に載せているコンパイル結果は、実際に javac を走らせた出力です。想定した挙動ではありません。
  5. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  6. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
java.time を含む問題を分野別に演習できます。
演習する →