2011-01-07 8 views
2

Siehe unten stehenden CodeDatum/Zeit Umstellung auf Ortszeit

Date date1 = new Date(HttpDateParser.parse(dateString); 
int offset = TimeZone.getTimeZone("GMT+5:30").getRawOffset(); 
date1.setTime(date1.getTime() + offset); 
String pattern = "yyyy-MM-dd hh:mma"; 
SimpleDateFormat date = new SimpleDateFormat(pattern); 
String dateNow = date.format(date1); 

Es zu indischer Standardzeit in Simulator fein umwandelt. Wenn ich versuche, im Gerät zu verwenden, bleibt die Zeit unverändert.

+1

Geben Sie ein Beispiel für den 'dateString' Wert an, mit dem Sie arbeiten. –

Antwort

0
Parses a date string and returns the number of milliseconds since January 1, 1970, 00:00:00 GMT. 

Aber was passiert, wenn Ich übergebe Millisekunden zur Funktion Date(). Das Datum wird automatisch in die lokale Zeitzone des Benutzers konvertiert. Prost.

Der folgende Code hat alles gut gemacht.

Date date1 = new Date(HttpDateParser.parse((String)kValue)) 

Das Datum1 wurde bereits in die lokale Zeitzone des Benutzers konvertiert.

2

HttpDateParser .parse sagt in der Dokumentation:

Analysiert einen String Datum und gibt die Anzahl der Millisekunden seit Januar 1, 1970, 00:00:00 GMT.

Wenn Sie die Zeit in der Geräte eigene Zeitzone angezeigt werden soll, müssen Sie nicht alle diese Zeitzone Umwandlung zu tun, nur Simple direkt verwenden:

long timeSinceEpoch = HttpDateParser.parse(dateString); 
String pattern = "yyyy-MM-dd hh:mma"; 
SimpleDateFormat date = new SimpleDateFormat(pattern); 
String dateNow = date.formatLocal(timeSinceEpoch); 
+0

versucht. Kein Erfolg. –

+0

Ist die Zeitzone des Geräts auf indische Standardzeit eingestellt? –

+0

Ja. Auch für Testzwecke verwende ich GMT + 5.50 für die Umwandlung der Zeit. Es funktioniert gut im Simulator, funktioniert aber nicht im Gerät. Ich habe den Unterschied 5.30h zwischen Datum und konvertiertem Datum im Simulator. Der von Ihnen angegebene Code gibt das gleiche Datum wie das Quelldatum an. –