Die Umwandlung von UTC in Anbetracht der Sommerzeit

Ich habe ein Datum, z.B. do. 17. April 09:03:01 GMT 2014 in der Zeitzone:

sun.util.calendar.ZoneInfo[id="Europe/London",offset=0,dstSavings=3600000,useDaylight=true,transitions=242,lastRule=java.util.SimpleTimeZone[id=Europe/London,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]

und jedesmal zu versuchen, um zu konvertieren UTC-es gibt do 17. April 10:03:01 GMT 2014

Dies ist jedoch nicht sinnvoll, da die entsprechenden UTC-Zeit ist eigentlich do 17. April 08:03:01 GMT 2014 da, dass das in meiner Zeitzone der Zeit Hinzugefügt wird, die 1 Stunde wegen der Sommerzeit.

Den code, den ich verwenden, um zu konvertieren, ist dies:

//timeZone - id="Europe/London"
public static Date timeZoneConvertDate(Date date, TimeZone timeZone) {
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.setTimeZone(timeZone);
        sdf.applyPattern("dd-MM-yyyy HH:mm:ss");
        String newDate = sdf.format(date);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        try {
            Date nd = sdf.parse(newDate);
            return nd;
        } catch (ParseException e) {
            return null;
    }
}

Könnte mir jemand erklären, was ich falsch mache?

  • Es ist nicht eine gute Praxis, zu konvertieren eines Objekts in eine Zeichenkette und dann analysieren es zu konvertieren zurück. Würde ich die joda-time-Bibliothek, die für eine solche Umwandlung: joda.org/joda-time
  • es war mein Fehler, ich habe bereits eine Korrektur auf die Frage
Schreibe einen Kommentar