Balíčky java.time, java.util, java.sql a java.text obsahují třídy pro reprezentaci data a času. Následující třídy jsou důležité pro práci s datem v Javě.
Java 8 Date/Time API
Java zavedla nové API pro datum a čas od verze Java 8. Balíček java.time obsahuje třídy Java 8 Date and Time.
- třída java.time.LocalDate
- třída java.time.LocalTime
- třída java.time.LocalDateTime
- třída java.time.MonthDay
- třída java.time.OffsetTime
- třída java.time.OffsetDateTime
- třída java.time.Clock
- třída java.time.ZonedDateTime
- třída java.time.ZoneId
- třída java.time.ZoneOffset
- třída java.time.Year
- java.time.YearMonth class
- třída java.time.Period
- třída java.time.Duration
- java.time.Instant class
- java.time.DayOfWeek výčet
- java.time.Month enum
Klasické rozhraní Date/Time API
Ale klasické nebo staré Java Date API je také užitečné. Podívejme se na seznam klasických tříd Date and Time.
- třída java.util.Date
- třída java.sql.Date
- třída java.util.Calendar
- třída java.util.GregorianCalendar
- třída java.util.TimeZone
- třída java.sql.Time
- třída java.sql.Timestamp
Formátování data a času
V Javě můžeme formátovat datum a čas pomocí následujících tříd:
Java Date and Time API
Java poskytuje funkci data a času pomocí dvou balíčků java.time a java.util. Balíček java.time je představen v Javě 8 a nově zavedené třídy se snaží překonat nedostatky starších tříd java.util.Date a java.util.Calendar.
Klasické třídy Date Time API
Primární třídy před vydáním Java 8 byly:
průmysl a továrna
Java.lang.System: Třída poskytuje metodu currentTimeMillis(), která vrací aktuální čas v milisekundách. Zobrazuje aktuální datum a čas v milisekundách od 1. ledna 1970.
java.util.Date: Používá se k zobrazení konkrétního okamžiku času s jednotkou milisekund.
java.util.Calendar: Je to abstraktní třída, která poskytuje metody pro převod mezi instancemi a manipulaci s poli kalendáře různými způsoby.
java.text.SimpleDateFormat: Je to třída, která se používá k formátování a analýze dat předdefinovaným způsobem nebo uživatelem definovaného vzoru.
java.util.TimeZone: Představuje posun časového pásma a také vypočítává letní čas.
Nevýhody existujících rozhraní Date/Time API
Nové rozhraní Date Time API v Javě 8
Nové datové rozhraní API pomáhá překonat výše uvedené nevýhody u starších tříd. Zahrnuje následující třídy:
java.time.LocalDate: Představuje rok-měsíc-den v kalendáři ISO a je užitečný pro reprezentaci data bez času. Lze jej použít pouze k zobrazení informací o datu, jako je datum narození nebo datum svatby.
java.time.LocalTime: Zabývá se pouze časem. Je to užitečné pro znázornění denní doby založené na člověku, jako jsou časy filmů nebo otevírací a zavírací časy místní knihovny.
java.time.LocalDateTime: Zvládá jak datum, tak čas, bez časového pásma. Jedná se o kombinaci LocalDate s LocalTime.
java.time.ZonedDateTime: Kombinuje třídu LocalDateTime s informacemi o zóně uvedenými ve třídě ZoneId. Představuje kompletní datum a čas spolu s informacemi o časovém pásmu.
java.time.OffsetTime: Zpracovává čas s odpovídajícím posunem časového pásma od Greenwiche/UTC, bez ID časového pásma.
java.time.OffsetDateTime: Zpracovává datum a čas s odpovídajícím posunem časového pásma od Greenwiche/UTC, bez ID časového pásma.
java.time.Clock : Poskytuje přístup k aktuálnímu okamžiku, datu a času v libovolném časovém pásmu. Ačkoli je použití třídy Clock volitelné, tato funkce nám umožňuje otestovat váš kód pro jiná časová pásma nebo pomocí pevných hodin, kde se čas nemění.
java.time.Instant : Představuje začátek nanosekundy na časové ose (od EPOCH) a je užitečný pro generování časového razítka reprezentujícího strojový čas. Okamžik, který nastane před epochou, má zápornou hodnotu a okamžik, který nastane po epoše, má kladnou hodnotu.
java.time.Duration : Rozdíl mezi dvěma okamžiky a měřený v sekundách nebo nanosekundách a nepoužívá konstrukce založené na datu, jako jsou roky, měsíce a dny, ačkoli třída poskytuje metody, které se převádějí na dny, hodiny a minuty.
java.time.Period : Používá se k definování rozdílu mezi daty v hodnotách založených na datu (roky, měsíce, dny).
java.time.ZoneId : Uvádí identifikátor časové zóny a poskytuje pravidla pro převod mezi Instant a LocalDateTime.
java.time.ZoneOffset : Popisuje posun časového pásma od času Greenwich/UTC.
java.time.format.DateTimeFormatter : Přichází s různými předdefinovanými formátovači, nebo si můžeme definovat vlastní. Má metodu parse() nebo format() pro analýzu a formátování hodnot data a času.