logo

Java data ir laikas

Paketuose java.time, java.util, java.sql ir java.text yra datos ir laiko vaizdavimo klasės. Šios klasės yra svarbios tvarkant datą Java.

Java 8 datos / laiko API

„Java“ pristatė naują datos ir laiko API nuo „Java 8“. Java.time pakete yra Java 8 datos ir laiko klasės.

Klasikinė datos / laiko API

Tačiau naudinga ir klasikinė arba sena „Java Date“ API. Pažiūrėkime klasikinių datos ir laiko klasių sąrašą.

Datos ir laiko formatavimas

Datą ir laiką galime formatuoti Java naudodami šias klases:

Java datos ir laiko API

„Java“ teikia datos ir laiko funkcijas naudojant du paketus java.time ir java.util. Paketas java.time įdiegtas Java 8 versijoje, o naujai įvestos klasės bando įveikti senųjų java.util.Date ir java.util.Calendar klasių trūkumus.

Klasikinės datos laiko API klasės

Pradinės klasės prieš „Java 8“ išleidimą buvo šios:

centos vs redhat

Java.lang.System: Klasė pateikia currentTimeMillis() metodą, kuris grąžina dabartinį laiką milisekundėmis. Rodo dabartinę datą ir laiką milisekundėmis nuo 1970 m. sausio 1 d.

java.util.Data: Jis naudojamas konkrečiam laiko momentui parodyti milisekundės vienetu.

java.util.Calendar: Tai abstrakčioji klasė, teikianti metodus konvertuoti tarp egzempliorių ir įvairiais būdais manipuliuoti kalendoriaus laukais.

java.text.SimpleDateFormat: Tai klasė, kuri naudojama formatuoti ir analizuoti datas iš anksto nustatytu būdu arba vartotojo apibrėžtu šablonu.

java.util.TimeZone: Tai rodo laiko juostos poslinkį ir taip pat apskaičiuoja vasaros laiką.

Esamos datos / laiko API trūkumai

    Siūlų sauga:Esamos klasės, tokios kaip data ir kalendorius, neužtikrina siūlų saugumo. Taigi tai sukelia sunkiai derinamų lygiagretumo problemų, kuriomis turi pasirūpinti kūrėjai. Naujosios „Java 8“ datos ir laiko API užtikrina gijų saugumą ir yra nekintamos, todėl kūrėjai išvengia lygiagretumo problemos.Blogas API projektavimas:Klasikinės datos ir kalendoriaus API nepateikia metodų, kaip atlikti pagrindines kasdienes funkcijas. „Java 8“ įdiegtos datos ir laiko klasės yra orientuotos į ISO ir pateikia daugybę skirtingų metodų, skirtų operacijoms atlikti, susijusioms su data, laiku, trukme ir laikotarpiais.Sunkus laiko juostos valdymas:Sunku tvarkyti laiko juostą naudojant klasikines datos ir kalendoriaus klases, nes kūrėjai turėjo parašyti jos logiką. Naudojant naujas API, laiko juostos tvarkymas gali būti lengvai atliekamas naudojant vietines ir „ZonedDate/Time“ API.

Nauja datos laiko API Java 8

Naujoji datos API padeda įveikti anksčiau minėtus senųjų klasių trūkumus. Tai apima šias klases:

java.time.LocalDate: ISO kalendoriuje jis reiškia metus-mėnesį-dieną ir yra naudingas datos be laiko atvaizdavimui. Jis gali būti naudojamas pateikti tik datos informaciją, tokią kaip gimimo data arba vestuvių data.

java.time.LocalTime: Jis prekiauja tik laiku. Tai naudinga vaizduojant žmogaus paros laiką, pvz., filmų laiką arba vietinės bibliotekos atidarymo ir uždarymo laikus.

java.time.LocalDateTime: Jis tvarko ir datą, ir laiką, be laiko juostos. Tai yra LocalDate ir LocalTime derinys.

java.time.ZonedDateTime: Jis sujungia LocalDateTime klasę su zonos informacija, pateikta ZoneId klasėje. Tai rodo visą datos laiko žymą kartu su laiko juostos informacija.

java.time.OffsetTime: Jis apdoroja laiką su atitinkamu laiko juostos poslinkiu nuo Grinvičo / UTC, be laiko juostos ID.

java.time.OffsetDateTime: Ji tvarko datą ir laiką su atitinkama laiko juostos poslinkiu nuo Grinvičo/UTC, be laiko juostos ID.

java.time.Clock : Tai suteikia prieigą prie dabartinės akimirkos, datos ir laiko bet kurioje laiko juostoje. Nors Clock klasės naudojimas yra neprivalomas, ši funkcija leidžia mums patikrinti jūsų kodą kitose laiko juostose arba naudojant fiksuotą laikrodį, kai laikas nesikeičia.

java.time.Instant : Tai rodo nanosekundės pradžią laiko juostoje (nuo EPOCH) ir naudinga generuojant laiko žymą, vaizduojančią mašinos laiką. Akimirka, įvykusi prieš epochą, turi neigiamą reikšmę, o akimirka, kuri įvyksta po epochos, turi teigiamą reikšmę.

java.time.Duration : Skirtumas tarp dviejų momentų ir matuojamas sekundėmis arba nanosekundėmis ir nenaudoja data pagrįstų konstrukcijų, tokių kaip metai, mėnesiai ir dienos, nors klasėje pateikiami metodai, kurie konvertuoja į dienas, valandas ir minutes.

java.time.Period : Jis naudojamas apibrėžti skirtumą tarp datų pagal datas pagrįstose reikšmėse (metai, mėnesiai, dienos).

java.time.ZoneId : Jame nurodomas laiko juostos identifikatorius ir pateikiamos taisyklės, kaip konvertuoti momentinį momentą į LocalDateTime.

java.time.ZoneOffset : Jame aprašomas laiko juostos poslinkis nuo Grinvičo/UTC laiko.

java.time.format.DateTimeFormatter : Jis pateikiamas naudojant įvairius iš anksto nustatytus formatuotojus arba galime apibrėžti savo. Jis turi parse () arba format () metodą, skirtą datos ir laiko reikšmėms analizuoti ir formatuoti.