1

DST について説明するコードのサンプルを書いたので、DST がどのように機能するかを見つけようとしています。なぜ TimeZone が午前 1 時に変更されるのか疑問に思っています。 1:00AM を指定する必要があり、TimeZone を変更する必要がありますが、そうではありません。誰か助けてくれませんか...

public static void main(String[] args) throws InterruptedException 
{
    TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
    DateFormat fmt = new SimpleDateFormat("dd-MM-yy HH:mm:ss zz");

    Calendar cal = Calendar.getInstance();
    cal.set(2013, 10, 03, 0, 59, 59);
    System.out.println(fmt.format(cal.getTime()));

    cal.set(2013, 10, 03, 1, 0, 0);
    System.out.println(fmt.format(cal.getTime()));
}

出力:

03-11-13 00:59:59 PDT
03-11-13 01:00:00 PST
4

3 に答える 3

3

@Andrew Spencerは正しいです。午前1:00には2つの可能性があり、Calendarそのうちの1つを選択しましたが、期待していたものではありません。1:00 AM PDTを表示したい場合は、12:59 AM に 1 分追加します。

  public static void main(String[] args) throws InterruptedException {
    TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
    DateFormat fmt = new SimpleDateFormat("dd-MM-yy HH:mm:ss zz");

    Calendar cal = Calendar.getInstance();
    cal.set(2013, 10, 03, 0, 59, 59);
    System.out.println(fmt.format(cal.getTime()));

    cal.add(Calendar.MINUTE, 1);  // this will still be in PDT
    System.out.println(fmt.format(cal.getTime()));
  }
于 2013-05-21T16:15:05.737 に答える
3

01:00 は 2 回発生します。1 回は PDT で、もう 1 回 (1 時間後) PST です。

時間変更の日付の 01:00 であることを Calendar に伝えると、クラスは、入力が 2 つの異なる可能性のある時間に対応していることを識別し、そのうちの 1 つを任意に使用します。

于 2013-05-21T15:44:34.783 に答える
0

私があなたのことを正しく理解しているなら、なぜ03-11-13 01:00:00ですかPST? あなたはこれを自分で説明したと思います。2:00 を実際に 1:00 に移動する必要がある場合、1:00 はすでに夏時間、つまり PST になっています。

于 2013-05-21T15:39:47.297 に答える