Paketi java.time, java.util, java.sql in java.text vsebujejo razrede za predstavitev datuma in ure. Naslednji razredi so pomembni za obravnavo datuma v Javi.
Java 8 API za datum/čas
Java je od Jave 8 uvedla nov API za datum in čas. Paket java.time vsebuje razrede datuma in časa Java 8.
- razred java.time.LocalDate
- razred java.time.LocalTime
- razred java.time.LocalDateTime
- razred java.time.MonthDay
- razred java.time.OffsetTime
- razred java.time.OffsetDateTime
- java.time.Razred ure
- razred java.time.ZonedDateTime
- razred java.time.ZoneId
- razred java.time.ZoneOffset
- java.time.Letni razred
- razred java.time.YearMonth
- java.time.Razred obdobja
- java.time.Razred trajanja
- java.time.Takojšnji razred
- java.time.DayOfWeek enum
- java.time.Month enum
Klasični API za datum/čas
Uporaben pa je tudi klasični ali stari Java Date API. Oglejmo si seznam klasičnih razredov datuma in časa.
- java.util.Razred datuma
- Razred java.sql.Date
- java.util.Calendar class
- razred java.util.GregorianCalendar
- razred java.util.TimeZone
- java.sql.Časovni razred
- Razred java.sql.Timestamp
Oblikovanje datuma in časa
V Javi lahko formatiramo datum in čas z uporabo naslednjih razredov:
API-ji za datum in čas Java
Java zagotavlja funkcijo datuma in časa s pomočjo dveh paketov java.time in java.util. Paket java.time je predstavljen v Javi 8 in na novo uvedeni razredi poskušajo premagati pomanjkljivosti podedovanih razredov java.util.Date in java.util.Calendar.
Klasični razredi API za datum in čas
Primarni razredi pred izdajo Jave 8 so bili:
java je prazna
Java.lang.System: Razred nudi metodo currentTimeMillis(), ki vrne trenutni čas v milisekundah. Prikazuje trenutni datum in čas v milisekundah od 1. januarja 1970.
java.util.Date: Uporablja se za prikaz določenega trenutka časa z enoto milisekunde.
java.util.Calendar: Je abstrakten razred, ki ponuja metode za pretvorbo med primerki in manipuliranje s koledarskimi polji na različne načine.
java.text.SimpleDateFormat: To je razred, ki se uporablja za oblikovanje in razčlenjevanje datumov na vnaprej določen način ali uporabniško določen vzorec.
java.util.TimeZone: Predstavlja zamik časovnega pasu in ugotavlja tudi poletni čas.
Slabosti obstoječih API-jev za datum/čas
Nov API za datum in čas v Javi 8
Novi datumski API pomaga premagati zgoraj omenjene pomanjkljivosti s podedovanimi razredi. Vključuje naslednje razrede:
java.time.LocalDate: Predstavlja leto-mesec-dan v koledarju ISO in je uporaben za predstavitev datuma brez časa. Uporablja se lahko samo za predstavitev informacij o datumu, kot je datum rojstva ali datum poroke.
java.time.LocalTime: Ukvarja se samo s časom. Uporaben je za predstavitev časa dneva, ki temelji na ljudeh, na primer ure kinoteke ali odpiralne in zapiralne ure lokalne knjižnice.
java.time.LocalDateTime: Obravnava tako datum kot uro, brez časovnega pasu. Je kombinacija LocalDate in LocalTime.
java.time.ZonedDateTime: Združuje razred LocalDateTime z informacijami o območju, podanimi v razredu ZoneId. Predstavlja celoten datumski žig skupaj s podatki o časovnem pasu.
java.time.OffsetTime: Obdeluje čas z ustreznim odmikom časovnega pasu od Greenwicha/UTC, brez ID-ja časovnega pasu.
java.time.OffsetDateTime: Obravnava datum in uro z ustreznim odmikom časovnega pasu od Greenwicha/UTC, brez ID-ja časovnega pasu.
java.time.Clock: Omogoča dostop do trenutnega trenutka, datuma in časa v katerem koli danem časovnem pasu. Čeprav uporaba razreda Clock ni obvezna, nam ta funkcija omogoča, da preizkusimo vašo kodo za druge časovne pasove ali z uporabo fiksne ure, kjer se čas ne spreminja.
java.time.Instant: Predstavlja začetek nanosekunde na časovni premici (od EPOCH) in uporaben za generiranje časovnega žiga, ki predstavlja strojni čas. Trenutek, ki se pojavi pred epoho, ima negativno vrednost, trenutek, ki se pojavi po epohi, pa ima pozitivno vrednost.
java.time.Duration : Razlika med dvema trenutkoma in merjeno v sekundah ali nanosekundah in ne uporablja datumskih konstruktov, kot so leta, meseci in dnevi, čeprav razred ponuja metode, ki pretvorijo v dneve, ure in minute.
java.time.Period: Uporablja se za določitev razlike med datumi v vrednostih, ki temeljijo na datumu (leta, meseci, dnevi).
java.time.ZoneId: Navaja identifikator časovnega pasu in zagotavlja pravila za pretvorbo med trenutkom in lokalnim datumom.
java.time.ZoneOffset: Opisuje odmik časovnega pasu od časa Greenwich/UTC.
java.time.format.DateTimeFormatter: Prihaja z različnimi vnaprej določenimi oblikovalniki, lahko pa določimo svojega. Ima metodo parse() ali format() za razčlenjevanje in oblikovanje vrednosti datuma in časa.