0

GMT+5:30 タイムゾーンを設定して、日付をデータベースに保存しています。データベースから同じ日付を取得した後、GMT+3:00 タイムゾーンを設定しています。

しかし、日付は変わりません....

例:

データベースへの挿入中:

  Calendar cal = Calendar.getInstance();
  cal.setTime(new Date());//some date 
  cal.setTimeZone(TimeZone.getTimeZone("GMT+5:30"));
  Date date = cal.getTime();

例: 現在の日付は「Fri Nov 07 23:00:00 GMT 2014」

データベースから取得した後:

  Calendar cal = Calendar.getInstance();
  cal.setTime(retrievedDate);//retrievedDate is retrieved from database. here date is "Fri Nov 07 23:00:00 GMT 2014"
  cal.setTimeZone(TimeZone.getTimeZone("GMT+3:00"));
  Date date = cal.getTime();

例: 同じ日付「Fri Nov 07 23:00:00 GMT 2014」も表示されるようになりました

4

3 に答える 3

5

この意味で、時間は絶対的なものです。それはただです

現在時刻と 1970 年 1 月 1 日 UTC 午前 0 時との差 (ミリ秒単位)。

でタイムゾーンを設定すると

cal.setTimeZone(TimeZone.getTimeZone("GMT+5:30"));

の表示プロパティを変更しているだけですCalendar。内部的には、同じミリ秒値を引き続き使用しますが、異なる +/- 数時間/分で表示されます。

あなたが最終的にするとき

Date date = cal.getTime();

オブジェクトは、Dateタイム ゾーンを知らなくても、そのミリ秒値から作成されます。DateFormat適切なタイム ゾーンで表示する場合は、a を使用します。

于 2013-11-08T04:56:45.340 に答える
1

タイムゾーンを変更しても、カレンダーの日付は変更されません。

特定のタイムゾーン形式に出力しようとしている場合は、DateFormat を使用してください

    Calendar cal = Calendar.getInstance();
    Date date = cal.getTime();
    System.out.println(date);
    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
    df.setTimeZone(TimeZone.getTimeZone("GMT+3:00"));
    System.out.println(df.format(date));
于 2013-11-08T05:15:57.473 に答える
0

日付はミリ秒ホルダーで、Calendar 操作で変更することはできません。カレンダーは、日付のテキスト表現のみに影響を与える可能性があります。SimpleDateFormatter を使用して異なるタイムゾーンの日付を表示する

于 2013-11-08T04:59:46.833 に答える