2 Stimmen

SimpleDateFormat in Android gibt in Android 1.6 eine unerwünschte Zeitzone.

Angesichts des Folgenden:

String dt = "Wed Jan 1 12:34:03 2010";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");
Date output = sdf.parse(dt);

Produziert:

Wed Jan 1 12:34:03 ADT 2010

Woher stammt die Zeitzone? Ich habe kein z in meinem Formatmuster.

Danke, Doug

3voto

BalusC Punkte 1034465

Sie zeigen anscheinend das toString()-Ergebnis des Date-Objekts wie folgt an

System.out.println(output);

Das Format ist in der javadoc festgelegt und enthält tatsächlich die Zeitzone.

toString

public String toString()

Konvertiert dieses Date-Objekt in einen String der Form:

dow mon dd hh:mm:ss zzz yyyy

Sie benötigen SimpleDateFormat#format(), um das erhaltene Date-Objekt vor der Darstellung in das gewünschte Format zu konvertieren. Zum Beispiel,

String s = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(output);
System.out.println(s); // 01-01-2010 12:34:03

0voto

leifg Punkte 8264

Wenn ein Date-Objekt erstellt wird, wird die Zeitzone aus den Systemeinstellungen festgelegt.

Versuchen Sie output.getTimeZoneoffset() und es gibt den Offset in Minuten zurück (für ADT sind es -180).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X