Paketi java.time, java.util, java.sql i java.text sadrže klase za predstavljanje datuma i vremena. Sljedeće klase važne su za rad s datumom u Javi.
Java 8 API za datum/vrijeme
Java je uvela novi API za datum i vrijeme od Jave 8. Paket java.time sadrži Java 8 klase datuma i vremena.
- klasa java.time.LocalDate
- klasa java.time.LocalTime
- klasa java.time.LocalDateTime
- klasa java.time.MonthDay
- java.time.OffsetTime klasa
- java.time.OffsetDateTime klasa
- java.vrijeme.Klas sata
- java.time.ZonedDateTime klasa
- klasa java.time.ZoneId
- klasa java.time.ZoneOffset
- java.vrijeme.Godina razreda
- java.time.YearMonth klasa
- java.time.Razred razdoblja
- java.time.Razred trajanja
- java.time.Instant klasa
- java.time.DayOfWeek enum
- java.time.Month enum
Klasični API za datum/vrijeme
Ali klasični ili stari Java Date API također je koristan. Pogledajmo popis klasičnih klasa datuma i vremena.
- java.util.Klasa datuma
- java.sql.Klasa datuma
- java.util.Klasa kalendara
- java.util.GregorianCalendar klasa
- klasa java.util.TimeZone
- java.sql.Vremenska klasa
- java.sql.Klasa vremenske oznake
Formatiranje datuma i vremena
Datum i vrijeme možemo formatirati u Javi pomoću sljedećih klasa:
Java API-ji za datum i vrijeme
Java pruža funkcionalnost datuma i vremena uz pomoć dva paketa java.time i java.util. Paket java.time predstavljen je u Javi 8, a novouvedene klase pokušavaju prevladati nedostatke naslijeđenih klasa java.util.Date i java.util.Calendar.
Klasične API klase datuma i vremena
Primarne klase prije izdanja Jave 8 bile su:
slušaj luku
Java.lang.Sustav: Klasa pruža metodu currentTimeMillis() koja vraća trenutno vrijeme u milisekundama. Prikazuje trenutni datum i vrijeme u milisekundama od 1. siječnja 1970.
java.util.Date: Koristi se za prikaz određenog trenutka vremena, s jedinicom milisekunde.
java.util.Calendar: To je apstraktna klasa koja pruža metode za pretvaranje između instanci i manipuliranje poljima kalendara na različite načine.
java.text.SimpleDateFormat: To je klasa koja se koristi za formatiranje i raščlanjivanje datuma na unaprijed definiran način ili korisnički definiran obrazac.
java.util.TimeZone: Predstavlja pomak vremenske zone, a također utvrđuje ljetno računanje vremena.
Nedostaci postojećih API-ja za datum/vrijeme
Novi API za datum i vrijeme u Javi 8
Novi datumski API pomaže u prevladavanju gore navedenih nedostataka s naslijeđenim klasama. Uključuje sljedeće klase:
java.time.LocalDate: Predstavlja godinu-mjesec-dan u ISO kalendaru i koristan je za predstavljanje datuma bez vremena. Može se koristiti za predstavljanje informacija samo o datumu kao što je datum rođenja ili datum vjenčanja.
java.time.LocalTime: Bavi se samo vremenom. Korisno je za predstavljanje doba dana ovisno o ljudima, kao što je vrijeme gledanja filmova ili vrijeme otvaranja i zatvaranja lokalne knjižnice.
java.time.LocalDateTime: Obrađuje i datum i vrijeme, bez vremenske zone. To je kombinacija LocalDate i LocalTime.
java.time.ZonedDateTime: Kombinira klasu LocalDateTime s informacijama o zoni danim u klasi ZoneId. Predstavlja potpunu datumsku vremensku oznaku zajedno s informacijama o vremenskoj zoni.
java.time.OffsetTime: Obrađuje vrijeme s odgovarajućim pomakom vremenske zone u odnosu na Greenwich/UTC, bez ID-a vremenske zone.
java.time.OffsetDateTime: Obrađuje datum i vrijeme s odgovarajućim pomakom vremenske zone u odnosu na Greenwich/UTC, bez ID-a vremenske zone.
java.vrijeme.Sat: Omogućuje pristup trenutnom trenutku, datumu i vremenu u bilo kojoj vremenskoj zoni. Iako je upotreba klase Sat izborna, ova nam značajka omogućuje testiranje vašeg koda za druge vremenske zone ili korištenjem fiksnog sata, gdje se vrijeme ne mijenja.
java.time.Instant : Predstavlja početak nanosekunde na vremenskoj crti (od EPOCH-a) i koristan je za generiranje vremenske oznake koja predstavlja strojno vrijeme. Trenutak koji se dogodi prije epohe ima negativnu vrijednost, a trenutak koji se dogodi nakon epohe ima pozitivnu vrijednost.
java.time.Duration : Razlika između dva trenutka i mjerena u sekundama ili nanosekundama i ne koristi konstrukcije temeljene na datumu kao što su godine, mjeseci i dani, iako klasa pruža metode koje pretvaraju u dane, sate i minute.
java.time.Period : Koristi se za definiranje razlike između datuma u vrijednostima temeljenim na datumu (godine, mjeseci, dani).
java.time.ZoneId: Navodi identifikator vremenske zone i daje pravila za pretvorbu između Instant i LocalDateTime.
java.time.ZoneOffset: Opisuje pomak vremenske zone od Greenwich/UTC vremena.
java.time.format.DateTimeFormatter: Dolazi s raznim unaprijed definiranim programima za formatiranje, ili možemo definirati vlastiti. Ima metodu parse() ili format() za analizu i oblikovanje vrijednosti datuma i vremena.