# Datum und Uhrzeit von UTC in MET umrechnen



## EinAnfänger (8. Feb 2012)

Hi!

Es ist mal wieder Zeit für eine blöde Frage 

Ich möchte gerne ein gegebenes Datum ("yyyy-MM-dd HH:mm:ss") in UTC-Zeit umrechnen in MET bzw. CET unter Berücksichtigung der Sommer- bzw. Winterzeit. Ich habe mir schon im Netz die Hacken abgesucht, bin aber nicht wirklich fündig geworden.

Daher bin ich für jeden Tipp dankbar.


----------



## SlaterB (8. Feb 2012)

ein Datum kann nicht wirklich umgerechnet werden, suchst du einen andere String-Repräsentation in der anderen Zeitzone?
verwende SimpleDateFormats mit verschiedenen Zeitzonen, in dem einen den String zum Date parsen, im anderen wieder zum String formatieren

ein etwas ähliches Thema, leider ungünstig verlaufen, aber unten etwas Code (dort ohne Zeitzonen)
http://www.java-forum.org/allgemeine-java-themen/131493-zeit-nmea-stream-simpledateformat.html


----------



## ireas (8. Feb 2012)

Das funktioniert über die Klasse [JAPI]SimpleDateFormat[/JAPI], wie hier beschrieben.

Von dort geklauter Codeausschnitt:


```
final Date currentTime = new Date();

final SimpleDateFormat sdf =
        new SimpleDateFormat("EEE, MMM d, yyyy hh:mm:ss a z");

// Give it to me in US-Pacific time.
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println("LA time: " + sdf.format(currentTime));

// Give it to me in GMT-0 time.
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("GMT time: " + sdf.format(currentTime));

// Or maybe Zagreb local time.
sdf.setTimeZone(TimeZone.getTimeZone("Europe/Zagreb"));
System.out.println("Zagreb time: " + sdf.format(currentTime));

// Even 10 hours and 10 minutes ahead of GMT
sdf.setTimeZone(TimeZone.getTimeZone("GMT+0010"));
System.out.println("10/10 ahead time: " + sdf.format(currentTime));
```


----------



## EinAnfänger (8. Feb 2012)

Irgendwie kriege ich den Dreh immer noch nicht...

Ok, nochmal vielleicht nochmal von vorne: Ich erhalte aus einer Anwendung einen Datums-String im Format "yyyy-MM-dd'T'HH:mm:ss.SSS". Diesen wandle ich mittels SimpleDateFormat in ein Datum um


```
Date d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse(Datums-String));
```

Die Zeitangabe im Datums-String basiert auf UTC.  Von der Logik her müsste ich dem umgewandelten Datum die Zeitzone UTC zuweisen, um dann irgendwie eine Umrechnung in in CET durchzuführen. Nur wie???


----------



## truesoul (8. Feb 2012)

Der @ireas hat dir doch ein gutes Beispiel gegeben? 

Galileo Computing :: Java ist auch eine Insel – 11.5 Zeitzonen

Oder wo liegt jetzt das Problem? :noe:


----------



## EinAnfänger (8. Feb 2012)

Ich hab´s mit Joda Time gelöst


----------



## ireas (8. Feb 2012)

Auch okay.

Falls du noch an der Java-API-Lösung interessiert bist:


```
String dateString = "2012-02-03 10:11:12";                              
final SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");                                                                               
Date d = sdf.parse(dateString);                                         

System.out.println(sdf.format(d));                                      
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));                           
System.out.println(sdf.format(d));                                      
sdf.setTimeZone(TimeZone.getTimeZone("CET"));                           
System.out.println(sdf.format(d));                                      
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));           
System.out.println(sdf.format(d));
```

Das erspart dir eine Dependency.


----------

