Datumsberechnung Zwischen UTC und GTM +1/2

Drawlix

Mitglied
Guten Tag allesamt,

momentan sitze ich vor einem Problem.
Ich bekomme von einem Server Date Objekte die im UTC Format sind nun muss diese in die deutsche Zeit umwandeln aber basierend auf dem Datum der eingräte.
Das Problem ist jetzt die einfache Bestimmung der Sommer und Winterzeit.

vielen dank für eure Hilfe
 
wie werden die Daten denn übertragen? als Objekte? Übertrage sie doch als Zahlenwert (long) und wandle sie beim Client in ein Date-Objekt um, das funktioniert auf jeden Fall.
 
Sofern noch nicht richtig gesetzt muss zunächst die localTimeZone in Java richtig gesetzt sein. Dann kann mit einem SimpleDateFormat das Datumsformat definiert werden, um die UTC-Zeit zu parsen. Danach kann die gelesene UTC-Zeit in die lokale Zeit konvertiert werden. Sofern Du ein UTC Beispiel und die TimeZone lieferst, kann ich ein Müsterchen in Java liefern.
 
Hallo,

wie sieht denn der Datums-String aus den du bekommst? Oder bekommst du ein java.util.Date?

also ich kann dir nur anraten, für Datums- / Zeitoperationen Joda-time (http://joda-time.sourceforge.net/) zu verwenden.
Damit geht so ziemlich alles mit 1/2 Klassen leicht von der Hand. Auch Informationen zu DST (Day Light Savings Time / Sommer- / Winterzeit) findet man dort einfach.

Schau mal hier:

Hier ein kleines Beispiel für LocalTime UTC Time Conversion mit Jodatime
Java:
package de.tutorials;

import java.util.TimeZone;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDateTime;

public class UTCTimeConversion {

	public static void main(String[] args) {

		LocalDateTime localDateTime = new LocalDateTime();
		System.out.printf("localTime: %30s\n", localDateTime);

		DateTime localTimeInUtc = localDateTime.toDateTime().withZone(DateTimeZone.UTC);
		System.out.printf("localTime in Utc: %15s\n", localTimeInUtc);

		String currentTimeZoneId = TimeZone.getDefault().getID();
		DateTime utcInLocalTime = localTimeInUtc.withZone(DateTimeZone.forID(currentTimeZoneId));
		System.out.printf("utc in localTime: %s (%s)\n", utcInLocalTime, currentTimeZoneId);
	}
}

Ausgabe:
Code:
localTime:        2012-02-28T19:54:13.585
localTime in Utc: 2012-02-28T18:54:13.585Z
utc in localTime: 2012-02-28T19:54:13.585+01:00 (Europe/Berlin)

Joda-time Maven Dependency:
Java:
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.1</version>
		</dependency>

Gruß Tom
 

Neue Beiträge

Zurück