1

ここに私のコードがありますが、タイムゾーンを変更した後に同じタイムスタンプを取得します。

TimeZone timeZone = TimeZone.getTimeZone("GMT+11");
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();

cal1.setTimeInMillis(Long.parseLong(classListDto.get(i)
    .getClassStartTime()) * THOUSAND);
cal2.setTimeInMillis(Long.parseLong(classListDto.get(i)
    .getClassEndTime()) * THOUSAND);
cal1.setTimeZone(timeZone);
cal2.setTimeZone(timeZone);

long startTimestamp = cal1.getTimeInMillis();
long endTimestamp = cal2.getTimeInMillis();
4

2 に答える 2

1

Calendarインスタンスでタイムゾーンを設定する代わりに、このようなことを試してください。

TimeZone timeZone = TimeZone.getTimeZone("GMT+11");
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(Long.parseLong(classListDto.get(i).getClassStartTime()) * THOUSAND);

Date tempDate = cal1.getTime();
SimpleDateFormat df = new SimpleDateFormat();
SimpleDateFormat df1 = new SimpleDateFormat();

df.setTimeZone(timeZone);
Date gmtDate = df1.parse(df.format(tempDate)); // Put this in a Try/Catch block

long startTimestamp = gmtDate.getTime();

お役に立てれば!SimpleDateFormatただし、2つのオブジェクトを使用するのは面倒です。

于 2013-03-01T07:15:52.780 に答える
0

cal1.getField(Calendar.HOUR);ミリ秒を読み取るだけでなく、a を実行すると、コードでタイムゾーンの変更を確認できます。カレンダーは、UTC に関してのみミリ秒を格納しているようです: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#getTimeInMillis()

于 2013-03-01T07:24:45.553 に答える