2

カレンダーオブジェクトをGMTに設定しようとしていますが、getTime()は常にGMT + 1の時刻(現在の時刻)を返します。私が試してみました:

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("skeniver"));

それらはすべて明らかにGMTを返します。

cal.getTimeZone().getDisplayName()

「GMT+00:00」を返します。しかし

cal.getTime().toString();

常にGMT+1で時刻を表示します。

なぜこれが起こっているのか誰かが知っていますか?

4

3 に答える 3

1

夏時間調整を行う必要があります。これが役立つかどうかはわかりませんが、世界中の多くの人々が現在使用しているアプリで、タイムゾーンをUTCに調整するために使用するコードです。Date代わりに使用しますCalendarが、機能します...

Date dateTimeNow = new Date();
TimeZone tz = TimeZone.getDefault();
int currentOffsetFromUTC = tz.getRawOffset() + (tz.inDaylightTime(dateTimeNow) ? tz.getDSTSavings() : 0);
Date dateTimeNowUTC = new Date(dateTimeNow.getTime() - currentOffsetFromUTC);
于 2011-10-25T09:54:11.027 に答える
0

文字列を使用する場合は、DateFormatまたはSimpleDateFormatを使用してください。

これが例です

SimpleDateFormat sdf = new SimpleDateFormat(); // here you can also define your format of date for e.g. "dd/MM/yyyy z"

sdf.setTimeZone("GMT");

Calendar cal = Calendar.getInstance();
System.out.println(sdf.format(cal.getTime()));
于 2011-10-25T09:39:21.820 に答える
0

Calendar.getTime()オブジェクトを返しDateます。Javaでは、aDateはUNIXエポックから始まる長いタイムスタンプの単なるホルダーです。

Dateデフォルトとは異なるでを表示するにはTimeZone、を使用できますSimpleDateFormat

于 2011-10-25T09:40:35.673 に答える