Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

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

Download:
- openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?

Spacer
Java 7 - Mehr als eine Insel von Christian Ullenboom
Das Handbuch zu den Java SE-Bibliotheken
Buch: Java 7 - Mehr als eine Insel

Java 7 - Mehr als eine Insel
Galileo Computing
1433 S., 2012, geb.
49,90 Euro, ISBN 978-3-8362-1507-7
Pfeil 4 Raum und Zeit
Pfeil 4.1 Weltzeit *
Pfeil 4.2 Wichtige Datum-Klassen im Überblick
Pfeil 4.2.1 Der 1.1.1970
Pfeil 4.2.2 System.currentTimeMillis()
Pfeil 4.2.3 Einfache Zeitumrechnungen durch TimeUnit
Pfeil 4.3 Sprachen der Länder
Pfeil 4.3.1 Sprachen und Regionen über Locale-Objekte
Pfeil 4.4 Internationalisierung und Lokalisierung
Pfeil 4.4.1 ResourceBundle-Objekte und Ressource-Dateien
Pfeil 4.4.2 Ressource-Dateien zur Lokalisierung
Pfeil 4.4.3 Die Klasse ResourceBundle
Pfeil 4.4.4 Ladestrategie für ResourceBundle-Objekte
Pfeil 4.5 Die Klasse Date
Pfeil 4.5.1 Objekte erzeugen und Methoden nutzen
Pfeil 4.5.2 Date-Objekte sind nicht immutable
Pfeil 4.6 Calendar und GregorianCalendar
Pfeil 4.6.1 Die abstrakte Klasse Calendar
Pfeil 4.6.2 Der gregorianische Kalender
Pfeil 4.6.3 Calendar nach Date und Millisekunden fragen
Pfeil 4.6.4 Ostertage *
Pfeil 4.6.5 Abfragen und Setzen von Datumselementen über Feldbezeichner
Pfeil 4.6.6 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *
Pfeil 4.6.7 Wann beginnt die Woche und wann die erste Woche im Jahr? *
Pfeil 4.7 Zeitzonen in Java *
Pfeil 4.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren
Pfeil 4.7.2 SimpleTimeZone
Pfeil 4.7.3 Methoden von TimeZone
Pfeil 4.8 Zeitdauern und der XML-Datentyp Duration *
Pfeil 4.8.1 DatatypeFactory als Fabrik
Pfeil 4.8.2 Die Duration-Klasse und ihre Methoden
Pfeil 4.9 Formatieren und Parsen von Datumsangaben
Pfeil 4.9.1 Ausgaben mit printf()
Pfeil 4.9.2 Mit DateFormat und SimpleDateFormat formatieren
Pfeil 4.9.3 Parsen von Datumswerten
Pfeil 4.10 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

4.7 Zeitzonen in Java *Zur 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.


Galileo Computing - Zum Seitenanfang

4.7.1 Zeitzonen durch die Klasse TimeZone repräsentierenZur nächsten ÜberschriftZur vorigen Ü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 sogenannte Zeitzonen-ID, aus der sie das TimeZone-Objekt aufbaut.

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.


Galileo Computing - Zum Seitenanfang

4.7.2 SimpleTimeZoneZur nächsten ÜberschriftZur vorigen Ü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 beziehungsweise Oktober jeweils um 2 Uhr nachts.

Abbildung

Abbildung 4.5: SimpleTimeZone ist eine Unterklasse von TimeZone

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.

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.

Galileo Computing - Zum Seitenanfang

4.7.3 Methoden von TimeZoneZur nächsten ÜberschriftZur vorigen Ü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 (eng. daylight saving time).

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.

Ob die Zeitzone überhaupt Sommer-/Winterzeit kennt, liefert die neue Methode observesDaylightTime() in Java 7.

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



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.







<< zurück
  Zum Katalog
Zum Katalog: Java 7 – Mehr als eine Insel
Java 7 – Mehr als eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Einstieg in Eclipse 3.7






 Einstieg in
 Eclipse 3.7


Zum Katalog: Android 3






 Android 3


Zum Katalog: NetBeans Platform 7






 NetBeans Platform 7


Zum Katalog: Java ist auch eine Insel






 Java ist
 auch eine Insel


Zum Katalog: Apps entwickeln für Android 4






 Apps entwickeln
 für Android 4


Zum Katalog: Java 7






 Java 7


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das 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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de