Pakiety java.time, java.util, java.sql i java.text zawierają klasy reprezentujące datę i godzinę. Poniższe klasy są ważne w przypadku obsługi daty w Javie.
Interfejs API daty/godziny w Javie 8
Java wprowadziła nowy interfejs API daty i godziny od wersji Java 8. Pakiet java.time zawiera klasy daty i godziny Java 8.
- Klasa java.time.LocalDate
- Klasa java.time.LocalTime
- Klasa java.time.LocalDateTime
- Klasa java.time.MonthDay
- Klasa java.time.OffsetTime
- Klasa java.time.OffsetDateTime
- Klasa java.time.Clock
- Klasa java.time.ZonedDateTime
- Klasa java.time.ZoneId
- Klasa java.time.ZoneOffset
- klasa java.time.Year
- Klasa java.time.YearMonth
- Klasa java.time.Period
- Klasa java.time.Duration
- Klasa java.time.Instant
- Wyliczenie java.time.DayOfWeek
- wyliczenie Java.time.Miesiąc
Klasyczny interfejs API daty/godziny
Ale klasyczny lub stary interfejs Java Date API jest również przydatny. Zobaczmy listę klasycznych klas Date i Time.
- Klasa java.util.Date
- Klasa java.sql.Date
- Klasa java.util.Calendar
- Klasa java.util.GregorianCalendar
- Klasa java.util.TimeZone
- Klasa java.sql.Time
- Klasa Java.sql.Znacznik czasu
Formatowanie daty i godziny
Możemy sformatować datę i godzinę w Javie, korzystając z następujących klas:
Interfejsy API daty i godziny w Javie
Java zapewnia funkcjonalność daty i godziny za pomocą dwóch pakietów java.time i java.util. Pakiet java.time został wprowadzony w Javie 8, a nowo wprowadzone klasy próbują przezwyciężyć niedociągnięcia starszych klas java.util.Date i java.util.Calendar.
Klasyczne klasy API daty i godziny
Podstawowymi klasami przed wydaniem Java 8 były:
wyszukiwanie liniowe w Javie
System.języka Java: Klasa udostępnia metodę currentTimeMillis(), która zwraca bieżący czas w milisekundach. Pokazuje aktualną datę i godzinę w milisekundach od 1 stycznia 1970 r.
Java.util.Data: Służy do pokazania określonej chwili czasu, z jednostką milisekundy.
java.util.Calendar: Jest to klasa abstrakcyjna udostępniająca metody konwersji między instancjami i manipulowania polami kalendarza na różne sposoby.
Java.text.SimpleDateFormat: Jest to klasa używana do formatowania i analizowania dat w sposób predefiniowany lub według wzoru zdefiniowanego przez użytkownika.
Java.util.Strefa czasowa: Reprezentuje przesunięcie strefy czasowej, a także oblicza czas letni.
Wady istniejących interfejsów API daty/godziny
Nowe API daty i godziny w Javie 8
Nowy interfejs API daty pomaga przezwyciężyć wady wspomniane powyżej w przypadku starszych klas. Obejmuje następujące zajęcia:
java.time.LocalDate: Reprezentuje rok-miesiąc-dzień w kalendarzu ISO i jest przydatny do przedstawiania daty bez godziny. Można go używać do reprezentowania wyłącznie informacji o dacie, takich jak data urodzenia lub data ślubu.
java.time.LocalTime: Zajmuje się tylko czasem. Jest przydatny do reprezentowania pory dnia opartej na ludziach, na przykład kin lub godzin otwarcia i zamknięcia lokalnej biblioteki.
java.time.LocalDateTime: Obsługuje zarówno datę, jak i godzinę, bez strefy czasowej. Jest to połączenie LocalDate z LocalTime.
java.time.ZonedDateTime: Łączy klasę LocalDateTime z informacją o strefie podaną w klasie ZoneId. Reprezentuje pełny znacznik daty i godziny wraz z informacjami o strefie czasowej.
java.time.OffsetTime: Obsługuje czas z odpowiednim przesunięciem strefy czasowej w stosunku do Greenwich/UTC, bez identyfikatora strefy czasowej.
java.time.OffsetDateTime: Obsługuje datę i godzinę z odpowiednim przesunięciem strefy czasowej w stosunku do Greenwich/UTC, bez identyfikatora strefy czasowej.
Java.time.Clock : Zapewnia dostęp do aktualnej chwili, daty i godziny w dowolnej strefie czasowej. Chociaż użycie klasy Clock jest opcjonalne, ta funkcja pozwala nam przetestować Twój kod dla innych stref czasowych lub przy użyciu stałego zegara, gdzie czas się nie zmienia.
java.time.Instant : Reprezentuje początek nanosekundy na osi czasu (od EPOCH) i jest przydatny do generowania znacznika czasu reprezentującego czas maszynowy. Chwila, która następuje przed epoką, ma wartość ujemną, a chwila, która następuje po epoce, ma wartość dodatnią.
Java.time.Duration : Różnica między dwiema chwilami mierzona w sekundach lub nanosekundach i nie używa konstrukcji opartych na datach, takich jak lata, miesiące i dni, chociaż klasa udostępnia metody konwertujące na dni, godziny i minuty.
Java.time.Period : Służy do definiowania różnicy pomiędzy datami w wartościach opartych na datach (lata, miesiące, dni).
java.time.ZoneId : Podaje identyfikator strefy czasowej i zapewnia zasady konwersji między Instant i LocalDateTime.
java.time.ZoneOffset : Opisuje przesunięcie strefy czasowej w stosunku do czasu Greenwich/UTC.
java.time.format.DateTimeFormatter : Zawiera różne predefiniowane formatery lub możemy zdefiniować własny. Posiada metodę parse() lub format() do analizowania i formatowania wartości daty i godziny.