Balíky java.time, java.util, java.sql a java.text obsahujú triedy na reprezentáciu dátumu a času. Nasledujúce triedy sú dôležité pre prácu s dátumom v Jave.
Java 8 Date/Time API
Java zaviedla nové API pre dátum a čas od verzie Java 8. Balík java.time obsahuje triedy Java 8 Date and Time.
- trieda java.time.LocalDate
- trieda java.time.LocalTime
- trieda java.time.LocalDateTime
- java.time.MonthDay trieda
- trieda java.time.OffsetTime
- trieda java.time.OffsetDateTime
- java.time.Clock class
- trieda java.time.ZonedDateTime
- trieda java.time.ZoneId
- trieda java.time.ZoneOffset
- java.čas.ročník
- java.time.RokMesiac trieda
- trieda java.time.Period
- java.time.Duration class
- java.time.Instant class
- java.time.DayOfWeek enum
- java.time.Month enum
Klasické rozhranie Date/Time API
Ale klasické alebo staré Java Date API je tiež užitočné. Pozrime sa na zoznam klasických tried Date and Time.
- java.util.Dátum triedy
- trieda java.sql.Date
- trieda java.util.Calendar
- java.util.GregorianCalendar triedy
- java.util.TimeZone triedy
- trieda java.sql.Time
- trieda java.sql.Timestamp
Formátovanie dátumu a času
V jazyku Java môžeme formátovať dátum a čas pomocou nasledujúcich tried:
Java Date and Time API
Java poskytuje funkciu dátumu a času pomocou dvoch balíkov java.time a java.util. Balík java.time je predstavený v jazyku Java 8 a novozavedené triedy sa snažia prekonať nedostatky starších tried java.util.Date a java.util.Calendar.
Klasické triedy Date Time API
Primárne triedy pred vydaním Java 8 boli:
diskrétna matematická negácia
Java.lang.System: Trieda poskytuje metódu currentTimeMillis(), ktorá vracia aktuálny čas v milisekundách. Zobrazuje aktuálny dátum a čas v milisekundách od 1. januára 1970.
java.util.Date: Používa sa na zobrazenie konkrétneho okamihu času s jednotkou milisekúnd.
java.util.Calendar: Je to abstraktná trieda, ktorá poskytuje metódy na konverziu medzi inštanciami a manipuláciu s poľami kalendára rôznymi spôsobmi.
java.text.SimpleDateFormat: Je to trieda, ktorá sa používa na formátovanie a analýzu dátumov preddefinovaným spôsobom alebo užívateľom definovaným vzorom.
java.util.TimeZone: Predstavuje posun časového pásma a tiež počíta s letným časom.
Nevýhody existujúcich rozhraní Date/Time API
Nové rozhranie Date Time API v Java 8
Nové API pre dátum pomáha prekonať vyššie uvedené nevýhody starších tried. Zahŕňa tieto triedy:
java.time.LocalDate: Predstavuje rok-mesiac-deň v kalendári ISO a je užitočný na zobrazenie dátumu bez času. Môže sa použiť iba na zobrazenie informácií o dátume, ako je dátum narodenia alebo dátum svadby.
java.time.LocalTime: Zaoberá sa iba časom. Je to užitočné na zobrazenie času dňa podľa ľudí, ako sú časy filmov alebo otváracie a zatváracie časy miestnej knižnice.
java.time.LocalDateTime: Zvláda dátum aj čas bez časového pásma. Ide o kombináciu LocalDate s LocalTime.
java.time.ZonedDateTime: Spája triedu LocalDateTime s informáciami o zóne uvedenými v triede ZoneId. Predstavuje úplnú dátumovú a časovú pečiatku spolu s informáciami o časovom pásme.
java.time.OffsetTime: Spracúva čas so zodpovedajúcim posunom časového pásma od Greenwich/UTC bez ID časového pásma.
java.time.OffsetDateTime: Spracúva dátum a čas so zodpovedajúcim posunom časového pásma od Greenwich/UTC, bez ID časového pásma.
java.time.Clock : Poskytuje prístup k aktuálnemu okamihu, dátumu a času v akomkoľvek danom časovom pásme. Aj keď je použitie triedy Clock voliteľné, táto funkcia nám umožňuje otestovať váš kód pre iné časové pásma alebo pomocou pevných hodín, kde sa čas nemení.
java.time.Instant : Predstavuje začiatok nanosekundy na časovej osi (od EPOCH) a je užitočný na generovanie časovej pečiatky, ktorá predstavuje strojový čas. Okamih, ktorý nastane pred epochou, má zápornú hodnotu a okamih, ktorý nastane po epoche, má kladnú hodnotu.
java.time.Duration : Rozdiel medzi dvoma okamihmi a meraný v sekundách alebo nanosekundách a nepoužíva konštrukty založené na dátume, ako sú roky, mesiace a dni, hoci trieda poskytuje metódy, ktoré sa konvertujú na dni, hodiny a minúty.
java.time.Period : Používa sa na definovanie rozdielu medzi dátumami v hodnotách založených na dátume (roky, mesiace, dni).
java.time.ZoneId : Uvádza identifikátor časového pásma a poskytuje pravidlá pre konverziu medzi Instant a LocalDateTime.
java.time.ZoneOffset : Popisuje posun časového pásma od času Greenwich/UTC.
java.time.format.DateTimeFormatter : Dodáva sa s rôznymi preddefinovanými formátovačmi, alebo si môžeme definovať vlastný. Má metódu parse() alebo format() na analýzu a formátovanie hodnôt dátumu a času.