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?
<< zurück | Galileo Computing / <openbook> / Java 7 - Mehr als eine Insel | vor >>
Java 7 - Mehr als eine Insel von Christian Ullenboom Das Handbuch zu den Java SE-Bibliotheken
Java 7 - Mehr als eine Insel Galileo Computing 1433 S., 2012, geb. 49,90 Euro, ISBN 978-3-8362-1507-7 |
| 4 Raum und Zeit
|  | 4.1 Weltzeit *
|  | 4.2 Wichtige Datum-Klassen im Überblick
|  |  | 4.2.1 Der 1.1.1970
|  |  | 4.2.2 System.currentTimeMillis()
|  |  | 4.2.3 Einfache Zeitumrechnungen durch TimeUnit
|  | 4.3 Sprachen der Länder
|  |  | 4.3.1 Sprachen und Regionen über Locale-Objekte
|  | 4.4 Internationalisierung und Lokalisierung
|  |  | 4.4.1 ResourceBundle-Objekte und Ressource-Dateien
|  |  | 4.4.2 Ressource-Dateien zur Lokalisierung
|  |  | 4.4.3 Die Klasse ResourceBundle
|  |  | 4.4.4 Ladestrategie für ResourceBundle-Objekte
|  | 4.5 Die Klasse Date
|  |  | 4.5.1 Objekte erzeugen und Methoden nutzen
|  |  | 4.5.2 Date-Objekte sind nicht immutable
|  | 4.6 Calendar und GregorianCalendar
|  |  | 4.6.1 Die abstrakte Klasse Calendar
|  |  | 4.6.2 Der gregorianische Kalender
|  |  | 4.6.3 Calendar nach Date und Millisekunden fragen
|  |  | 4.6.4 Ostertage *
|  |  | 4.6.5 Abfragen und Setzen von Datumselementen über Feldbezeichner
|  |  | 4.6.6 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *
|  |  | 4.6.7 Wann beginnt die Woche und wann die erste Woche im Jahr? *
|  | 4.7 Zeitzonen in Java *
|  |  | 4.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren
|  |  | 4.7.2 SimpleTimeZone
|  |  | 4.7.3 Methoden von TimeZone
|  | 4.8 Zeitdauern und der XML-Datentyp Duration *
|  |  | 4.8.1 DatatypeFactory als Fabrik
|  |  | 4.8.2 Die Duration-Klasse und ihre Methoden
|  | 4.9 Formatieren und Parsen von Datumsangaben
|  |  | 4.9.1 Ausgaben mit printf()
|  |  | 4.9.2 Mit DateFormat und SimpleDateFormat formatieren
|  |  | 4.9.3 Parsen von Datumswerten
|  | 4.10 Zum Weiterlesen
## 4.7 Zeitzonen in Java * 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. ### 4.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren 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.
### 4.7.2 SimpleTimeZone 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 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. ### 4.7.3 Methoden von TimeZone 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. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java 7 – Mehr als eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchempfehlungen
| Java und XML
| Einstieg in Eclipse 3.7
| Android 3
| NetBeans Platform 7
| Java ist auch eine Insel
| Apps entwickeln für Android 4
| Java 7
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

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