Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Vorwort
1 Neues in Java 8 und Java 7
2 Fortgeschrittene String-Verarbeitung
3 Threads und nebenläufige Programmierung
4 Datenstrukturen und Algorithmen
5 Raum und Zeit
6 Dateien, Verzeichnisse und Dateizugriffe
7 Datenströme
8 Die eXtensible Markup Language (XML)
9 Dateiformate
10 Grafische Oberflächen mit Swing
11 Grafikprogrammierung
12 JavaFX
13 Netzwerkprogrammierung
14 Verteilte Programmierung mit RMI
15 RESTful und SOAP-Web-Services
16 Technologien für die Infrastruktur
17 Typen, Reflection und Annotationen
18 Dynamische Übersetzung und Skriptsprachen
19 Logging und Monitoring
20 Sicherheitskonzepte
21 Datenbankmanagement mit JDBC
22 Java Native Interface (JNI)
23 Dienstprogramme für die Java-Umgebung
Stichwortverzeichnis

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java SE 8 Standard-Bibliothek von Christian Ullenboom
Das Handbuch für Java-Entwickler
Buch: Java SE 8 Standard-Bibliothek

Java SE 8 Standard-Bibliothek
Pfeil 5 Raum und Zeit
Pfeil 5.1 Weltzeit *
Pfeil 5.2 Wichtige Datum-Klassen im Überblick
Pfeil 5.2.1 Der 1.1.1970
Pfeil 5.2.2 System.currentTimeMillis()
Pfeil 5.2.3 Einfache Zeitumrechnungen durch TimeUnit
Pfeil 5.3 Sprachen der Länder
Pfeil 5.3.1 Sprachen und Regionen über Locale-Objekte
Pfeil 5.4 Internationalisierung und Lokalisierung
Pfeil 5.4.1 ResourceBundle-Objekte und Ressource-Dateien
Pfeil 5.4.2 Ressource-Dateien zur Lokalisierung
Pfeil 5.4.3 Die Klasse ResourceBundle
Pfeil 5.4.4 Ladestrategie für ResourceBundle-Objekte
Pfeil 5.4.5 Ladeprozess und Format anpassen *
Pfeil 5.5 Die Klasse Date
Pfeil 5.5.1 Objekte erzeugen und Methoden nutzen
Pfeil 5.5.2 Date-Objekte sind nicht immutable
Pfeil 5.6 Calendar und GregorianCalendar
Pfeil 5.6.1 Die abstrakte Klasse Calendar
Pfeil 5.6.2 Calendar nach Date und Millisekunden fragen
Pfeil 5.6.3 Abfragen und Setzen von Datumselementen über Feldbezeichner
Pfeil 5.6.4 Kalender-Typen *
Pfeil 5.6.5 Kalender-Exemplare bauen über den Calendar.Builder
Pfeil 5.6.6 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *
Pfeil 5.6.7 Wann beginnt die Woche und wann die erste Woche im Jahr? *
Pfeil 5.6.8 Der gregorianische Kalender
Pfeil 5.7 Zeitzonen in Java *
Pfeil 5.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren
Pfeil 5.7.2 SimpleTimeZone
Pfeil 5.7.3 Methoden von TimeZone
Pfeil 5.9 Formatieren und Parsen von Datumsangaben
Pfeil 5.9.1 Ausgaben mit printf(…)
Pfeil 5.9.2 Ausgaben mit Calendar-Methoden getDisplayName(…) *
Pfeil 5.9.3 Mit DateFormat und SimpleDateFormat formatieren
Pfeil 5.9.4 Parsen von Datumswerten
Pfeil 5.10 Date-Time-API in Java 8
Pfeil 5.10.1 Datumsklasse LocalDate
Pfeil 5.10.2 Ostertage *
Pfeil 5.10.3 Die Klasse YearMonth
Pfeil 5.10.4 Die Klasse MonthDay
Pfeil 5.10.5 Aufzählung DayOfWeek und Month
Pfeil 5.10.6 Klasse LocalTime
Pfeil 5.10.7 Klasse LocalDateTime
Pfeil 5.10.8 Klasse Year
Pfeil 5.10.9 Zeitzonen-Klassen ZoneId und ZoneOffset
Pfeil 5.10.10 Temporale Klassen mit Zeitzoneninformationen
Pfeil 5.10.11 Klassen Period und Duration
Pfeil 5.10.12 Klasse Instant
Pfeil 5.10.13 Parsen und Formatieren von Datumszeitwerten
Pfeil 5.10.14 Das Paket java.time.temporal *
Pfeil 5.10.15 Konvertierungen zwischen der klassischen API und Date-Time-API
Pfeil 5.11 Die Default-Falle
Pfeil 5.12 Zum Weiterlesen
 
Zum Seitenanfang

5.7Zeitzonen in Java * Zur vorigen ÜberschriftZur nächsten Überschrift

Eine Zeitzone ist ein Gebiet mit gleicher Zeitrechnung. Im Allgemeinen ist sie an einem geografischen Längenkreis ausgerichtet, und die lokale Zeit einer Zeitzone unterscheidet sich im Allgemeinen um eine ganze Stundenzahl von der Weltzeit UTC. Für Zeitzonen östlich des Nullmeridians ist die Differenz der Ortszeit minus der Weltzeit positiv, für westliche Zeitzonen negativ. Deutschland liegt in der Zeitzone 1, und die Standardzeit heißt Mitteleuropäische Zeit (MEZ) oder auch CET (Central European Time).

Da die UTC-Zeit keinen Wechsel zwischen Sommer- und Winterzeit kennt, ist mitunter im Sommer zu unserer Zeit eine weitere Stunde zu addieren. Sommerzeiten (engl. daylight saving time) haben keine astronomische Grundlage.

 
Zum Seitenanfang

5.7.1Zeitzonen durch die Klasse TimeZone repräsentieren Zur vorigen ÜberschriftZur nächsten Überschrift

Ein Exemplar der Klasse TimeZone repräsentiert eine Zeitzone inklusive Zeitverschiebung. Mit der statischen Methode getDefault() lässt sich immer ein Zeitzonen-Objekt passend zu den lokalen Gegebenheiten ermitteln; die explizitere Methode getTimeZone() erwartet einen String, die so genannte Zeitzonen-ID, aus der sie das TimeZone-Objekt aufbaut.

[zB]Beispiel

Hole die Zeitzone für Deutschland:

TimeZone timezone = TimeZone.getTimeZone( "Europe/Berlin" );
System.out.println( timezone.getDisplayName() ); // Mitteleuropäische Zeit
abstract class java.util.TimeZone
implements Serializable, Cloneable
  • static TimeZone getDefault()
    Gibt die Zeitzone für die aktuelle (geografische) Umgebung zurück. Diese Zeitzone muss nicht unbedingt die deutsche Sommer-/Winterzeit kennen.

  • static TimeZone getTimeZone(String ID)
    Liefert die Zeitzone für eine gegebene Abkürzung. So liefert TimeZone.getTimeZone("CET") unsere Zeitzone, in der auch die Sommer-/Winterzeit voreingestellt ist.

  • static String[] getAvailableIDs()
    Liefert alle der Bibliothek bekannten Abkürzungen für Zeitzonen. Die Liste ist über 600 Einträge lang und beginnt mit »ACT«, geht über »CET«, »Europe/Berlin« bis »Zulu«.

  • static String[] getAvailableIDs(int rawOffset)
    Liefert die Abkürzungen für Zeitzonen in einer gegebenen Zeitzone.

Merkwürdigkeiten

Fast immer läuft die Uhr vorwärts und nur in ganz seltenen Fällen rückwärts. Eine Ausnahme betraf Shanghai am 1.1.1928 um 00:00 Uhr, an dem die Uhr auf den 31.12.1927 23:54:08 zurückgestellt wurde, also um fast 6 Minuten. Diese Eigenschaft ist abhängig von der Zeitzone und taucht so nur in der Zeitzone »Asia/Shanghai« auf.

 
Zum Seitenanfang

5.7.2SimpleTimeZone Zur vorigen ÜberschriftZur nächsten Überschrift

SimpleTimeZone ist eine konkrete Unterklasse der abstrakten Klasse TimeZone. Um ein Exemplar für die mitteleuropäische Zeit zu konfigurieren, initialisieren wir das Objekt mit der gewünschten Zeitverschiebung gegenüber der UTC. Zusätzlich wird ein Kürzel für die Zeitzone als String übergeben. Danach stellen wir noch passend die Regeln für Anfang und Ende der Sommerzeit ein. Der Wechsel erfolgt am letzten Sonntag im März bzw. Oktober jeweils um 2 Uhr nachts.

[zB]Beispiel

Eine SimpleTimeZone für Deutschland:

SimpleTimeZone mez = new SimpleTimeZone( +1*60*60*1000, "CET" );
mez.setStartRule( Calendar.MARCH, -1, Calendar.SUNDAY, 2*60*60*1000 );
mez.setEndRule( Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000 );

Wenn wir ein Calendar-Objekt mit der mitteleuropäischen Zeit als Grundlage versehen wollen, schreiben wir:

Calendar cal = GregorianCalendar.getInstance( mez );

Hinweis: Das Beispiel zeigt die Möglichkeit der SimpleTimeZone-Klasse; für ein deutsches Zeitzonen-Objekt ist TimeZone.getTimeZone("CET") kürzer.

SimpleTimeZone ist eine Unterklasse von TimeZone.

Abbildung 5.1SimpleTimeZone ist eine Unterklasse von TimeZone.

Da Java die CET-Zeitzone und alle anderen Zeitzonen korrekt beschreibt, müssen wir in der Regel nie ein eigenes TimeZone-Objekt aufbauen. Die Daten aller wichtigen Zeitzonen sind in Java hinterlegt, und Änderungen werden laufend übernommen. Java greift hier auf die Zeitzonen-Daten der Olsen-Datenbank (auch tz database genannt) zurück.

class java.util.SimpleTimeZone
extends TimeZone
  • SimpleTimeZone(int rawOffset, String ID)

  • SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime)

  • SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime, int dstSavings)

  • SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int startTimeMode, int endMonth, int endDay, int endDayOfWeek, int endTime, int endTimeMode, int dstSavings)
    Erzeugt mit unterschiedlichen Belegungen ein Zeitzonen-Objekt.

 
Zum Seitenanfang

5.7.3Methoden von TimeZone Zur vorigen ÜberschriftZur nächsten Überschrift

Die ersten vorgestellten Methoden der TimeZone-Klasse waren alle statisch, also nicht an Eigenschaften eines konkreten Zeitzonen-Objekts gebunden. Die TimeZone-Klasse bietet eine Reihe von Methoden (einige sind abstrakt), und die Unterklasse SimpleTimeZone fügt noch Methoden hinzu. Eine Gruppe von überladenen getDisplayName()-Methoden liefert String-Repräsentationen der Zeitzone, damit sie zum Beispiel in grafischen Dialogen angezeigt werden kann. Eine andere Gruppe von Gettern liefert zum Beispiel eine Zeitzonen-ID oder den UTC-Offset.

Sommer oder Winterzeit?

Die Methode inDaylightTime(Date) in TimeZone liefert true, wenn das Datum vom Date-Objekt in der Sommerzeit liegt (engl. daylight saving time). Ob die Zeitzone überhaupt Sommer-/Winterzeit kennt, liefert die Methode observesDaylightTime().

[zB]Beispiel

Ist der 1. Januar oder der 1. Juli 2012 in der Sommerzeit?

TimeZone mez = TimeZone.getTimeZone( "CET" );
Calendar cal1 = new GregorianCalendar( 2012, Calendar.JANUARY, 1 );
System.out.println( mez.inDaylightTime( cal1.getTime() ) ); // false
Calendar cal2 = new GregorianCalendar( 2012, Calendar.JULY, 1 );
System.out.println( mez.inDaylightTime( cal2.getTime() ) ); // true

Die Zeitzone sollte besser explizit gesetzt werden, denn TimeZone.getDefault() muss nicht funktionieren. Das GregorianCalendar-Objekt ist standardmäßig auch mit der Default-Zeitzone belegt, sodass cal1.getTimeZone().inDaylightTime(cal1.getTime()) nicht zwingend funktioniert.

[zB]Beispiel

Die Default-Zeitzone muss nicht zwingend die Sommer-/Winterzeit kennen:

TimeZone tz = TimeZone.getDefault();
System.out.println( tz.observesDaylightTime() ); // false
TimeZone cet = TimeZone.getTimeZone( "CET" );
System.out.println( cet.observesDaylightTime() ); // true

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java SE 8 Standard-Bibliothek Java SE 8 Standard-Bibliothek
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Java ist auch eine Insel
Java ist auch eine Insel


Zum Rheinwerk-Shop: Professionell entwickeln mit Java EE 8
Professionell entwickeln mit Java EE 8


Zum Rheinwerk-Shop: Besser coden
Besser coden


Zum Rheinwerk-Shop: Entwurfsmuster
Entwurfsmuster


Zum Rheinwerk-Shop: IT-Projektmanagement
IT-Projektmanagement


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2018
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern