/ / Ändern Sie den Zeitstempel in einen anderen gmt + Zeitstempel - Android

Ändern Sie den Zeitstempel in einen anderen gmt + Zeitstempel - Android

Hier ist mein Code, aber nach dem Ändern der Zeitzone wird derselbe Zeitstempel angezeigt.

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();

Antworten:

1 für die Antwort № 1

Versuchen Sie etwas Ähnliches, anstatt die Zeitzone in Ihrem Fenster festzulegen Calendar Beispiel.

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();

Hoffe das hilft! Ich weiß, dass es beschissen ist, 2 zu verwenden SimpleDateFormat Objekte zwar.


0 für die Antwort № 2

Sie können die Zeitzonenänderung in Ihrem Code sehen, wenn Sie eine cal1.getField(Calendar.HOUR); Anstatt nur die Millisekunden zu lesen. Der Kalender scheint die Millis nur in UTC zu speichern: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#getTimeInMillis()