Zielony Smok - logo witryny

Daty i czas: Klasa java.util.GregorianCalendar

Klasa GregorianCalendar jest klasą dziedziczącą po Calendar.

Klasa GregorianCalendar obejmuje kalendarz hybrydowy będący jednocześnie kalendarzem gregoriańskim i juliańskim:

  • kalendarz gregoriański odejmujący daty od 15 października 1582 r do dziś
  • proleptyczny kalendarz gregoriański obejmujący:
    • kalendarz juliański od 1 marca 4 r n.e. do 4 października 1582 r.
    • proleptyczny kalendarz juliański: od nieskończoności do końca lutego 4 r n.e.

Dla krajów, które od razu przyjęły kalendarz gregoriański daty od 5 października 1582 r. do 14 października nigdy nie istniały. W Polsce kalendarz gregoriański przyjęto od razu. W innych krajach z pewnym opóźnieniem. W niektórych krajach dla celów religijnych nadal stosuje się kalendarz juliański.

Jedyną różnicą między kalendarzem juliańskim i gregoriańskim jest odmienny sposób naliczania lat przestępnych.

Kalendarz juliański operuje rokiem 365,25 dniowym. Przeciętny rok ma 365 dni, a w roku, którego liczba jest podzielna przez 4, czyli raz na 4 lata, dodaje się jeden rok przestępny. Ponieważ faktyczna długość roku wynosi 365,2422 dnia, kalendarz juliański śpieszy się w stosunku do Słońca. Różnica ta wynosi 365,25 – 365,2422 = 0,0078 dnia rocznie, czyli 1 dzień na 128 lat, gdyż 0,0078 x 128 = 0.9984, czyli w przybliżeniu 1. Czyli po 128 juliańskich latach kalendarz wskazuje datę o 1 dzień późniejszą niż Słońce.

Lata przestępne w kalendarzu gregoriańskim są liczone tak samo jak w juliańskim (czyli
każdy rok, który dzieli się przez 4) z wyjątkiem dat mających 00 na końcu. Lata, które dzielą się przez 100, ale nie przez 400, są zwykłymi latami. Lata podzielne przez 100 i przez 400 są latami przestępnymi. Czyli rok 1700, 1800, 1900 były zwykłe, a lata 1600 i 2000 były przestępne.

Ten sposób liczenia powoduje, że kalendarz rozmija się ze Słońcem o 1 dzień na 3226 lat. Można to policzyć następująco: W ciągu 400 lat mamy (400 x 365) + (100 – 4 (podzielne przez 100)) + 1 dzień (podzielny przez 100 i przez 400) = 146097 dni kalendarza. Według Słońca mamy 400 x 365.24219 = 146096,876, czyli różnica wynosi 0,124 dnia na 400 lat, czyli 1 dzień na 3226 lat, co dla praktycznych celów jest całkiem dobrą dokładnością.

Daty historyczne są dokładne od 1 marca 4 r. n.e. Wcześniej lata przestępne były różnie naliczane.

W kalendarzu juliańskim Nowy Rok przypadał 25 marca. W GregorianCalendar zawsze jest to 1 stycznia. W prypadkach koniecznych należy wprowadzić (sobie) korektę – Nowy Rok będzie przypadał między 1 stycznia a 24 marca.

Kalendarz przyjmuje historyczny porządek dat i nieistnienie roku 0. Historycznie przed rokiem 1 p.n.e występuje 1 r. p.n.e. i nie ma roku zerowego, który występuje przy atronomicznym porządku dat.

Erę ustawiamy metodą set(Calendar.ERA, GregorianCalendar.BC) dla lat przed naszą erą albo set(Calendar.ERA, GregorianCalendar.AD) dla lat naszej ery.

Aby przeliczyć daty z systemu klasycznego na astronomiczny, należy od roku w systemie klasycznym odjąć 1 i zmienić znak roku na przeciwny.

395 p.n.e – 1 = 394 = -394

Aby przeliczyć rok astronomiczny na klasyczny, należy zmienić znak przed rokiem na
dodatni, a następnie dodać do roku liczbę 1.

-394 = 394 = 394 + 1 = 395.

W klasie GregorianCalendar obowiązują te same reguły dotyczące tygodnia roku i roku tygodniowego co w klasie Calendar.

Domyślne wartości pól

Wartości te są używane jeśli wartość w jakimś polu pozostała niezdefiniowana.

Domyślne wartosci pól klasy java.util.GregorianCalendar
Pole Wartość domyślna Opis
ERA GregorianCalendar.AD Anno Domini, Roku Pańskiego, n. e.
YEAR 1970 Rok
MONTH JANUARY Miesiąc styczeń.
DAY_OF_MONTH 1 Pierwszy dzień miesiąca, 1
DAY_OF_WEEK Monday Dzień tygodnia. Poniedziałek
WEEK_OF_MONTH 0 Tydzień miesiąca, 0
DAY_OF_WEEK_IN_MONTH 1 Dzień tygodnia w miesiącu, 1
AM_PM 1 Ante meridiem (przed południem), Post meridiem (po południu), 1, AM
HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND 0 Godzina, godzina dnia, minuta, sekunda, milisekunda

Pola statyczne

  • GregorianCalendar.AD – Nasza era (n.e.). AD oznacza Anno Domini (Roku Pańskiego). Zaczynają się od 1 w gorę. Rok 2 jest rokiem późniejszym niż rok 1.
  • GregorianCalendar.BC – Przed naszą erą (p.n.e). BC oznacza Before Christ (Przed Chrystusem). Zaczynają się od 1 w dół. Rok drugi jest rokiem wcześniejszym niż 1

Konstruktory

  • GregorianCalendar() – ustawiony na bieżącą datę i czas w domyślnej strefie czasowej i domyślnej lokalizacji
  • GregorianCalendar(int year, int month, int day) – ustawiony na podaną datę i bieżący czas w domyślnej strefie czasowej i domyślnej lokalizacji
  • GregorianCalendar(int year, int month, int day, int hour, int minute) – ustawiony na podaną datę i podany czas w domyślnej strefie czasowej i domyślnej lokalizacji
  • GregorianCalendar(int year, int month, int day, int hour, int minute, int second) – ustawiony na podaną datę i podany czas w domyślnej strefie czasowej i domyślnej lokalizacji
  • GregorianCalendar(Locale aLocale) – ustawiony na bieżącą datę i czas, w domyślnej strefie czasowej, dla podanej lokalizacji
  • GregorianCalendar(TimeZone zone) – ustawiony na bieżącą datę i czas w podanej strefie czasowej dla domyślnej lokalizacji.
  • GregorianCalendar(TimeZone zone, Locale aLocale) – ustawiony na bieżącą datę i czas w podanej strefie czasowej dla podanej lokalizacji.
package dt09.java_util_gregoriancalendar;
import java.util.*;
public class Listing059 {
    public static void main(String[] args) {
        GregorianCalendar gc1 = new GregorianCalendar();
        System.out.println("gcl: " + gc1);
        GregorianCalendar gc2 = new GregorianCalendar(1952, 5, 4);
        System.out.println("gc2: " + gc2);
        GregorianCalendar gc3 = new GregorianCalendar(1952, 5, 4, 21, 5);
        System.out.println("gc3: " + gc3);
        GregorianCalendar gc4 = new GregorianCalendar(1952, 5, 4, 21, 5, 0);
        System.out.println("gc4: " + gc4);
        Locale lc = Locale.getDefault();
        GregorianCalendar gc5 = new GregorianCalendar(lc);
        System.out.println("gc5: " + gc5);
        SimpleTimeZone stz = new SimpleTimeZone(3600000, "Europe/Warsaw",
                Calendar.MARCH, -1, Calendar.SUNDAY, 7200000,
                SimpleTimeZone.WALL_TIME, Calendar.OCTOBER, -1, Calendar.SUNDAY,
                10800000, SimpleTimeZone.WALL_TIME, 3600000);
        stz.setStartYear(1996);
        GregorianCalendar gc6 = new GregorianCalendar(stz);
        System.out.println("gc6: " + gc6);
        GregorianCalendar gc7 = new GregorianCalendar(stz, lc);
        System.out.println("gc7: " + gc7);
    }
}
gcl: java.util.GregorianCalendar[time=1538843910496,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=279,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=38,SECOND=30,MILLISECOND=496,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
gc2: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=?,YEAR=1952,MONTH=5,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=4,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
gc3: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=?,YEAR=1952,MONTH=5,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=4,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=5,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
gc4: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=?,YEAR=1952,MONTH=5,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=4,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=5,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
gc5: java.util.GregorianCalendar[time=1538843910522,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=279,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=38,SECOND=30,MILLISECOND=522,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
gc6: java.util.GregorianCalendar[time=1538843910522,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=java.util.SimpleTimeZone[id=Europe/Warsaw,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=1996,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=10800000,endTimeMode=0],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=279,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=38,SECOND=30,MILLISECOND=522,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
gc7: java.util.GregorianCalendar[time=1538843910524,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=java.util.SimpleTimeZone[id=Europe/Warsaw,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=1996,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=10800000,endTimeMode=0],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=279,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=38,SECOND=30,MILLISECOND=524,ZONE_OFFSET=3600000,DST_OFFSET=3600000]

Metody

Metody klasy java.util.GregorianCalendar
Zwraca Metoda Opis
GregorianCalendar GregorianCalendar.from(ZonedDateTime zdt) Przekształca java.time.ZoneDateTime w obiekt GregorianCalendar
String getCalendarType() Zwraca typ kalendarza
Date getGregorianChange() Zwraca datę wprowadzenia kalendarza gregoriańskiego
void setGregorianChange(Date date) Ustawia datę od której obowiązuje kalendarz gregoriański
ZonedDateTime toZonedDateTime() Przekształca ten kalendarz w obiekt java.time.ZonedDateTime
package dt09.java_util_gregoriancalendar;
import java.time.*;
import java.util.*;
public class Listing060 {
    public static void main(String[] args) {
        Locale lc = Locale.getDefault();
        SimpleTimeZone stz = new SimpleTimeZone(3600000, "Europe/Warsaw",
                Calendar.MARCH, -1, Calendar.SUNDAY, 7200000,
                SimpleTimeZone.WALL_TIME, Calendar.OCTOBER, -1, Calendar.SUNDAY,
                10800000, SimpleTimeZone.WALL_TIME, 3600000);
        stz.setStartYear(1996);
        GregorianCalendar cal = new GregorianCalendar(stz, lc);
        //
        String ct = cal.getCalendarType();
        System.out.println("ct: " + ct);
        Date dt = cal.getGregorianChange();
        System.out.println("dt: " + dt);
        cal.setGregorianChange(dt);
        ZonedDateTime zdt = cal.toZonedDateTime();
        System.out.println("zdt: " + zdt);
        GregorianCalendar cal1 = GregorianCalendar.from(zdt);
        System.out.println("cal1: " + cal1);
    }
}
ct: gregory
dt: Fri Oct 15 01:00:00 CET 1582
zdt: 2018-10-06T18:41:38.997+02:00[Europe/Warsaw]
cal1: java.util.GregorianCalendar[time=1538844098997,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=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]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=279,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=41,SECOND=38,MILLISECOND=997,ZONE_OFFSET=3600000,DST_OFFSET=3600000]

Przykład z dokumentacji klasy

package dt09.java_util_gregoriancalendar;
import java.util.*;
public class Listing061 {
    public static void main(String[] args) {
        // get the supported ids for GMT-08:00 (Pacific Standard Time)
        String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
        // begin output
        System.out.println("Current Time");
        // create a Pacific Standard Time time zone
        SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
        // set up rules for Daylight Saving Time
        pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY,
                2 * 60 * 60 * 1000);
        pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY,
                2 * 60 * 60 * 1000);
        // create a GregorianCalendar with the Pacific Daylight time zone
        // and the current date and time
        Calendar calendar = new GregorianCalendar(pdt);
        Date trialTime = new Date();
        calendar.setTime(trialTime);
        // print out a bunch of interesting things
        System.out.println("ERA: " + calendar.get(Calendar.ERA));
        System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
        System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
        System.out.println(
                "WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
        System.out.println(
                "WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
        System.out.println("DATE: " + calendar.get(Calendar.DATE));
        System.out.println(
                "DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
        System.out
                .println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
        System.out
                .println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println("DAY_OF_WEEK_IN_MONTH: "
                + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
        System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
        System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
        System.out
                .println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
        System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
        System.out
                .println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
        System.out.println("ZONE_OFFSET: "
                + (calendar.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000)));
        System.out.println("DST_OFFSET: "
                + (calendar.get(Calendar.DST_OFFSET) / (60 * 60 * 1000)));
        System.out.println("Current Time, with hour reset to 3");
        calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
        calendar.set(Calendar.HOUR, 3);
        System.out.println("ERA: " + calendar.get(Calendar.ERA));
        System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
        System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
        System.out.println(
                "WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
        System.out.println(
                "WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
        System.out.println("DATE: " + calendar.get(Calendar.DATE));
        System.out.println(
                "DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
        System.out
                .println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
        System.out
                .println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println("DAY_OF_WEEK_IN_MONTH: "
                + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
        System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
        System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
        System.out
                .println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
        System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
        System.out
                .println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
        System.out.println("ZONE_OFFSET: "
                + (calendar.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000))); // in hours
        System.out.println("DST_OFFSET: "
                + (calendar.get(Calendar.DST_OFFSET) / (60 * 60 * 1000))); // in hours
    }
}
Current Time
ERA: 1
YEAR: 2018
MONTH: 9
WEEK_OF_YEAR: 40
WEEK_OF_MONTH: 1
DATE: 6
DAY_OF_MONTH: 6
DAY_OF_YEAR: 279
DAY_OF_WEEK: 7
DAY_OF_WEEK_IN_MONTH: 1
AM_PM: 0
HOUR: 9
HOUR_OF_DAY: 9
MINUTE: 44
SECOND: 20
MILLISECOND: 636
ZONE_OFFSET: -8
DST_OFFSET: 1
Current Time, with hour reset to 3
ERA: 1
YEAR: 2018
MONTH: 9
WEEK_OF_YEAR: 40
WEEK_OF_MONTH: 1
DATE: 6
DAY_OF_MONTH: 6
DAY_OF_YEAR: 279
DAY_OF_WEEK: 7
DAY_OF_WEEK_IN_MONTH: 1
AM_PM: 0
HOUR: 3
HOUR_OF_DAY: 3
MINUTE: 44
SECOND: 20
MILLISECOND: 636
ZONE_OFFSET: -8
DST_OFFSET: 1