Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Java ist auch eine Insel (2. Aufl.) von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 1.4
Java ist auch eine Insel (2. Auflage)
gp Kapitel 10 Raum und Zeit
  gp 10.1 Greenwich Mean Time (GMT)
  gp 10.2 Wichtige Datum-Klassen im Überblick
  gp 10.3 Zeitzonen und Sprachen der Länder
    gp 10.3.1 Zeitzonen durch die Klasse TimeZone repräsentieren
  gp 10.4 Sprachen der Länder
    gp 10.4.1 Sprachen in Java über Locale-Objekte
  gp 10.5 Einfache Übersetzung durch ResourceBundle-Objekte
  gp 10.6 Die Klasse Date
    gp 10.6.1 Objekte erzeugen und Methoden nutzen
    gp 10.6.2 Zeitmessung und Profiling
  gp 10.7 Calendar und GregorianCalendar
    gp 10.7.1 Die abstrakte Klasse Calendar
    gp 10.7.2 Der gregorianische Kalender
  gp 10.8 Formatieren der Datumsangaben
    gp 10.8.1 Mit DateFormat und SimpleDateFormat formatieren
    gp 10.8.2 Parsen von Datumswerten
    gp 10.8.3 Parsen und Formatieren ab bestimmten Positionen


Galileo Computing

10.3 Zeitzonen und Sprachen der Länder  downtop


Galileo Computing

10.3.1 Zeitzonen durch die Klasse TimeZone repräsentieren  toptop

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. Soweit die Theorie! Eigentlich sollte getDefault() immer die Zeitzone liefern, in der sich das Programm befindet, doch leider kommt es häufig zu Fehlern. So sollte das Ergebnis für Deutschland ein TimeZone-Exemplar für die ECT sein, doch das ist nicht immer so. Aufgrund dieser Unzulänglichkeit bleibt uns nichts anderes übrig, als ECT fest an die Datum-Klasse des Objekts zu binden.

Beispiel   Nutzen wir für die Zeitrepräsentation Calendar-Objekte, so können wir mit setTimeZone() eine Zone fest zuweisen.
calendar.setTimeZone( TimeZone.getTimeZone("ECT") );
abstract class java.util.TimeZone
implements Serializable, Cloneable

gp  static TimeZone getDefault()
Gibt die Zeitzone für die aktuelle (geografische) Umgebung zurück.
gp  static String[] getAvailableIDs()
Liefert alle der Bibliothek bekannten Abkürzungen für Zeitzonen.
gp  static String[] getAvailableIDs( int rawOffset )
Liefert die Abkürzungen für Zeitzonen in einer gegebenen Zeitzone.
gp  static TimeZone getTimeZone( String ID )
Liefert die Zeitzone für eine gegebene Abkürzung.
Beispiel   Um eine Aufzählung aller unterstützten Zeitzonen zu erhalten, geben wir alle Zeichenketten aus, die uns die statische Methode getAvailableIDs() liefert.

Listing 10.1   AllZones.java

import java.util.*;

public class AllZones
{
  public static void main( String args[] )
  {
    String s[] = TimeZone.getAvailableIDs();

Arrays.sort( s ); for ( int i = 0; i < s.length; i++ ) System.out.println( s[i] ); } }

Arrays.sort(String[]) ist die statische Methode einer speziellen Arrays-Klasse, die das übergebene Feld sortiert. Unter Windows mit dem SDK Version 1.4 liefert das Programm 553 Zeitzonen von

ACT
AET
AGT
ART
AST
Africa/Abidjan
Africa/Accra

bis

US/Pacific-New
US/Samoa
UTC
Universal
VST
W-SU
WET
Zulu

Die Unterklasse SimpleTimeZone

Eine spezielle Unterklasse von TimeZone ist SimpleTimeZone. Um ein Exemplar für die mitteleuropäische Zeit zu konfigurieren, initialisieren wir das Objekt mit der gewünschten Zeitverschiebung gegenüber der GMT. 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.

Beispiel   Eine SimpleTimeZone für Deutschland
SimpleTimeZone mez = new SimpleTimeZone( +1*60*60*1000, "ECT" );
mez.setStartRule( Calendar.MARCH, -1, Calendar.SUNDAY, 2*60*60*1000 );
mez.setEndRule( Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000 );

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

Calendar cal = GregorianCalendar.getInstance( mez );




Copyright © Galileo Press GmbH 2003
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.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de