Zielony Smok - logo witryny

Klasa java.util.TimeZone

Świat podzielony jest na strefy czasowe. Nie wystarczy podanie godziny. Należy podać strefę czasową, czy w tej lokalizacji obowiązuje czas letni, a jeśli tak, to czy w danej chwili obowiązuje czy nie.

Klasa abstrakcyjna TimeZone obsługuje strefy czasowe, ich przesunięcie oraz czas letni.

Konstruktory

.

Ponieważ klasa jest abstrakcyjna obiekt klasy można utworzyć wyłącznie przy użyciu klas fabrycznych.

  • TimeZone()

Właściwości

Istnieją dwa statyczne pola używane w metodzie getDisplayName()d o wskazania, czy nazwa strefy czasowej ma być pełna, czy skrócona:

  • TimeZone.LONG – pełna nazwa strefy czasowej
  • TimeZone.SHORT – skrócona nazwa strefy czasowej

Metody

Metody klasy java.util.TimeZone
Zwraca Nazwa Opis Listing
Object clone() Tworzy klon tego obiektu TimeZone
String[] TimeZone.getAvailableIDs() Tworzy tablicę identyfikatorów wszystkich dostępnych stref czasowych 019
String[] TimeZone.getAvailableIDs(int offset) Zwraca tablicę identyfikatorów stref czasowych przesuniętych w stosunku do GMT o podany czas (w milisekundach) 020
TimeZone TimeZone.getDefault() Zwraca (sklonowaną) domyślną strefę czasową Java Virtual Machine. Jeśli JVM aktualnie nie ma zbuforowanej strefy czasowej, pobiera strefę (ID) zadeklarowaną we właściwości ‘user.timezone’. Jeśli właściwość jest niedostępna próbuje uzyskać strefę czasową określoną w systemie operacyjnym. Jeśli nie uda się jej uzyskać albo jest nieznana użyta zostanie strefa GMT. Przy powrocie metody ‘user.timezone’ jest ustawiane na ustaloną wartość. 018
TimeZone TimeZone.setDefault(TimeZone zone) Podana strefa czasowa ustawiana jest w buforze. Jeśli jest ‘null’ bufor jest czyszczony. Metoda nie zmienia właściwości ‘user.timezone’. 022
String getID() Zwraca ID tej strefy czasowej 021
void setID(String ID) Ustawia ID tej strefy czasowej na podany 021
String getDisplayName() Zwraca nazwę LONG tej strefy w postaci czytelnej dla człowieka, dla domyślnej lokalizacji 022
String getDisplayName(boolean daylight, int style) Zwraca nazwę tej strefy w postaci czytelnej dla człowieka w  stylu określonym przez ‘style’ i dla domyślnej lokalizacji 022
String getDisplayName(boolean daylight, int style, Locale locale) Zwraca nazwę tej strefy w postaci czytelnej dla człowieka, w stylu określonym przez ‘style’ dla podanej lokalizacji. 022
String getDisplayName(Locale locale) Zwraca nazwę tej strefy w postaci czytelnej dla człowieka, w stylu LONG dla podanej lokalizacji. 022
int getRawOffset() Metoda abstrakcyjna. Zwraca czas w milisekundach, który należy dodać do UTC, aby otrzymać standardowy czas tej strefy czasowej 023
void setRawOffset(int offsetMillis) Metoda abstrakcyjna. Ustawia podstawowy czas przesunięcia dla tej strefy czasowej w stosunku do GMT 023
int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) Metoda abstrakcyjna. Określa przesunięcie strefy czasowej dla podanej daty w milisekundach, zmodyfikowaną w przypadku czasu letniego, czyli ile trzeba dodać do UTC, aby otrzymać czas lokalny. Miesiące liczone są od 0. 024
int getOffset(long date) Określa przesunięcie tej strefy czasowej w milisekundach względem UTC dla podanej daty 024
int getDSTSavings() Zwraca odstęp czasowy, który trzeba dodać do lokalnego czasu standartowego, aby otrzymać czas lokalnego zegara ściennego. Jeśli metoda useDaylightTime() zwraca true, te metoda zwraca 1h=3600000 ms. Jeśli tamta metoda zwraca false, ta metoda zwraca 0. 025
boolean useDaylightTime() Metoda abstrakcyjna. Sprawdza czy ta strefa czasowa używa DST. Zwraca ‘true’ jeśli tak, ‘false’ jeśli nie. 025
TimeZone TimeZone.getTimeZone(String ID) Zwraca strefę czasową dla podanego ID. ID może być podane jako nazwa skrócona („PST”), pełna („America/Los_Angeles”) lub („GMT-8:00”). Poprawne i zalecane jest użycie nazw pełnych 026
TimeZone TimeZone.getTimeZone(ZoneId) Zwraca strefę czasową dla podanego obiektu ZoneId. Będziemy o tej klasie mówić później 027
boolean hasSameRules(TimeZone other) Zwraca ‘true’, jeśli ta i porównywana strefa mają te same zasady i przesunięcie albo ‘false’ w przeciwnym wypadku. Jeśli różnią się jedynie ID-em zwracane jest ‘true’ Jeśli ‘other’ jest ‘null’ zwracane jest false. 028
ZoneId toZoneId() Konwertuje tę TimeZone do ZoneId. 027
boolean inDaylightTime(Date date) Metoda abstrakcyjna. Sprawdza czy podana data wypada w tej strefie czasowej w czasie letnim czy nie. 028
boolean observesDaylightTime() Zwraca ‘true’ jeśli strefa jest aktualnie czas letni albo gdy przejście od czas standardowego do letniego jest przewidywane w czasie przyszłym. Domyślna implementacja zwraca ‘true’ jeśli metoda useDaylightTime() zwraca ‘true’ lub inDaylightTime(new Date) zwraca ‘true’ 028
package dt06.java_util_timezone;
import java.util.*;
public class Listing018 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        System.out.println("tz: " + tz);
    }
}
tz: sun.util.calendar.ZoneInfo[id="Europe/Belgrade",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=119,lastRule=java.util.SimpleTimeZone[id=Europe/Belgrade,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
package dt06.java_util_timezone;
import java.util.*;
public class Listing019{
	public static void main(String[] args) {
		String[] tzs = TimeZone.getAvailableIDs();
		Arrays.sort(tzs);
		for(int i = 0; i < tzs.length; i++){
			System.out.println((i + 1) + ". " + tzs[i]);
		}
	}
}
1. ACT
2. AET
3. AGT
4. ART
5. AST
6. Africa/Abidjan
...
625. W-SU
626. WET
627. Zulu
ackage dt06.java_util_timezone;
import java.util.*;
public class Listing020{
	public static void main(String[] args) {
		String[] tzs = TimeZone.getAvailableIDs(3600000);
		Arrays.sort(tzs);
		for(int i = 0; i < tzs.length; i++){
			System.out.println(tzs[i]);
		}
	}
}
Africa/Algiers
Africa/Bangui
Africa/Brazzaville
Africa/Ceuta
Africa/Douala
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Luanda
Africa/Malabo
Africa/Ndjamena
Africa/Niamey
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Tunis
Arctic/Longyearbyen
Atlantic/Jan_Mayen
CET
ECT
Etc/GMT-1
Europe/Amsterdam
Europe/Andorra
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Budapest
Europe/Busingen
Europe/Copenhagen
Europe/Gibraltar
Europe/Ljubljana
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Monaco
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Rome
Europe/San_Marino
Europe/Sarajevo
Europe/Skopje
Europe/Stockholm
Europe/Tirane
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Warsaw
Europe/Zagreb
Europe/Zurich
MET
Poland
package dt06.java_util_timezone;
import java.util.*;
public class Listing021{
	public static void main(String[] args) {
		TimeZone tz = TimeZone.getDefault();
		String id = tz.getID();
		System.out.println(id);
		tz.setID("Europe/Warsaw");
		String tz1 = tz.getID();
		System.out.println(tz1);
	}
}
Europe/Belgrade
Europe/Warsaw
package dt06.java_util_timezone;
import java.util.*;
public class Listing022 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        System.out.println("tz: " + tz);
        String dn1 = tz.getDisplayName();
        System.out.println("dn1: " + dn1);
        String dn2 = tz.getDisplayName(Locale.GERMANY);
        System.out.println("dn2: " + dn2);
        String dn3 = tz.getDisplayName(true, TimeZone.LONG);
        System.out.println("dn3: " + dn3);
        String dn4 = tz.getDisplayName(true, TimeZone.SHORT);
        System.out.println("dn4: " + dn4);
        String dn5 = tz.getDisplayName(true, TimeZone.LONG, Locale.FRANCE);
        System.out.println("dn5: " + dn5);
    }
}
tz: sun.util.calendar.ZoneInfo[id="Europe/Belgrade",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=119,lastRule=java.util.SimpleTimeZone[id=Europe/Belgrade,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
dn1: czas środkowoeuropejski standardowy
dn2: Mitteleuropäische Normalzeit
dn3: czas środkowoeuropejski letni
dn4: CEST
dn5: heure d’été d’Europe centrale
package dt06.java_util_timezone;
import java.util.*;
public class Listing023 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        int off = tz.getRawOffset();
        System.out.println("off: " + off);
        tz.setRawOffset(7200000);
        int off1 = tz.getRawOffset();
        System.out.println("off1: " + off1);
    }
}
off: 3600000
off1: 7200000
package dt06.java_util_timezone;
import java.util.*;
public class Listing024 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        int off1 = tz.getOffset(GregorianCalendar.AD, 1952, 5, 4,
                Calendar.WEDNESDAY, 0);
        System.out.println("off1:" + off1);
        //-
        TimeZone tz1 = TimeZone.getDefault();
        GregorianCalendar cal = new GregorianCalendar();
        long millis = cal.getTimeInMillis();
        int off2 = tz1.getOffset(millis);
        System.out.println("off2: " + off2);
    }
}
off1:3600000
off2: 7200000
package dt06.java_util_timezone;
import java.util.*;
public class Listing025 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        boolean dt = tz.useDaylightTime();
        System.out.println("dt: " + dt);
        int dst = tz.getDSTSavings();
        System.out.println("dst: " + dst);
    }
}
dt: true
dst: 3600000
package dt06.java_util_timezone;
import java.util.*;
public class Listing026 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getTimeZone("Europe/Warsaw");
        System.out.println("tz: " + tz);
        //
        TimeZone tz1 = TimeZone.getTimeZone("GreenDragonZone");
        tz1.setID("GDT");
        tz1.setRawOffset(60000);
        System.out.println("tz1: " + tz1);
        System.out.println(tz1.getDisplayName());
    }
}
tz: sun.util.calendar.ZoneInfo[id="Europe/Warsaw",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=165,lastRule=java.util.SimpleTimeZone[id=Europe/Warsaw,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
tz1: sun.util.calendar.ZoneInfo[id="GDT",offset=60000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
GMT+00:01
package dt06.java_util_timezone;
import java.time.*;
import java.util.*;
public class Listing027 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getTimeZone(ZoneId.of("Europe/Warsaw"));
        System.out.println("tz: " + tz);
        ZoneId tzId = tz.toZoneId();
        System.out.println("tzId: " + tzId);
    }
}
tz: sun.util.calendar.ZoneInfo[id="Europe/Warsaw",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=165,lastRule=java.util.SimpleTimeZone[id=Europe/Warsaw,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]
tzId: Europe/Warsaw
package dt06.java_util_timezone;
import java.util.*;
public class Listing028 {
    public static void main(String[] args) {
        TimeZone tz = TimeZone.getDefault();
        TimeZone tz1 = TimeZone.getTimeZone("Europe/Oslo");
        boolean rules = tz.hasSameRules(tz1);
        System.out.println("rules: " + rules);
        //-
        boolean obs = tz.observesDaylightTime();
        System.out.println("obs: " + obs);
        //-
        GregorianCalendar gd = new GregorianCalendar();
        long millis = gd.getTimeInMillis();
        Date date = new Date(millis);
        boolean op = tz.inDaylightTime(date);
        System.out.println("op: " + op);
        //-
    }
}
rules: false
obs: true
op: true