logo

Java datums un laiks

Pakotnēs java.time, java.util, java.sql un java.text ir klases datuma un laika attēlošanai. Tālāk norādītās nodarbības ir svarīgas, lai apstrādātu datumu Java.

Java 8 datuma/laika API

Java ir ieviesusi jaunu datuma un laika API kopš Java 8. Java.time pakotnē ir Java 8 datuma un laika klases.

Klasiskā datuma/laika API

Taču noder arī klasiskā vai vecā Java Date API. Apskatīsim klasisko datuma un laika klašu sarakstu.

Datuma un laika formatēšana

Mēs varam formatēt datumu un laiku Java, izmantojot šādas klases:

Java datuma un laika API

Java nodrošina datuma un laika funkcionalitāti, izmantojot divas pakotnes java.time un java.util. Pakotne java.time ir ieviesta Java 8, un jaunieviestās klases mēģina pārvarēt mantoto klašu java.util.Date un java.util.Calendar trūkumus.

Klasiskās datuma laika API klases

Sākuma klases pirms Java 8 izlaišanas bija:

cipari alfabētā

Java.lang.System: Klase nodrošina pašreizējoTimeMillis() metodi, kas atgriež pašreizējo laiku milisekundēs. Tas parāda pašreizējo datumu un laiku milisekundēs no 1970. gada 1. janvāra.

java.util.Datums: To izmanto, lai parādītu noteiktu laika momentu ar milisekundes vienību.

java.util.Calendar: Tā ir abstrakta klase, kas nodrošina metodes konvertēšanai starp gadījumiem un dažāda veida manipulācijām ar kalendāra laukiem.

java.text.SimpleDateFormat: Tā ir klase, ko izmanto, lai formatētu un parsētu datumus iepriekš noteiktā veidā vai lietotāja definētā veidā.

java.util.TimeZone: Tas atspoguļo laika joslas nobīdi, kā arī aprēķina vasaras laiku.

Esošo datuma/laika API trūkumi

    Vītnes drošība:Esošās klases, piemēram, datums un kalendārs, nenodrošina pavedienu drošību. Tādējādi tas noved pie grūti atkļūdojamām vienlaicības problēmām, par kurām jārūpējas izstrādātājiem. Jaunās Java 8 datuma un laika API nodrošina pavedienu drošību un ir nemainīgas, tādējādi izvairoties no izstrādātāju radītās vienlaicības problēmas.Slikta API projektēšana:Klasiskās datuma un kalendāra API nenodrošina metodes ikdienas pamata funkciju veikšanai. Java 8 ieviestās datuma un laika klases ir orientētas uz ISO un nodrošina vairākas dažādas metodes, lai veiktu darbības attiecībā uz datumu, laiku, ilgumu un periodiem.Sarežģīta laika joslu apstrāde:Ir grūti apstrādāt laika joslu, izmantojot klasiskās Datuma un Kalendāra klases, jo izstrādātājiem bija jāraksta tās loģika. Izmantojot jaunos API, laika joslu apstrādi var viegli veikt, izmantojot vietējās un ZonedDate/Time API.

Jauns datuma laika API Java 8

Jaunā datuma API palīdz pārvarēt iepriekš minētos trūkumus saistībā ar mantotajām klasēm. Tas ietver šādas klases:

java.time.LocalDate: Tas apzīmē gadu-mēnesi-dienu ISO kalendārā un ir noderīgs, lai attēlotu datumu bez laika. To var izmantot, lai attēlotu tikai datumu informāciju, piemēram, dzimšanas datumu vai kāzu datumu.

java.time.LocalTime: Tas attiecas tikai uz laiku. Tas ir noderīgi, lai attēlotu uz cilvēku balstītu diennakts laiku, piemēram, filmu laikus vai vietējās bibliotēkas atvēršanas un slēgšanas laikus.

java.time.LocalDateTime: Tas apstrādā gan datumu, gan laiku, bez laika joslas. Tā ir LocalDate un LocalTime kombinācija.

java.time.ZonedDateTime: Tas apvieno LocalDateTime klasi ar zonas informāciju, kas norādīta ZoneId klasē. Tas attēlo pilnu datuma laika zīmogu kopā ar laika joslas informāciju.

java.time.OffsetTime: Tas apstrādā laiku ar atbilstošu laika joslas nobīdi no Griničas/UTC, bez laika joslas ID.

java.time.OffsetDateTime: Tas apstrādā datumu un laiku ar atbilstošu laika joslas nobīdi no Griničas/UTC, bez laika joslas ID.

java.time.Clock : Tas nodrošina piekļuvi pašreizējam mirklim, datumam un laikam jebkurā laika joslā. Lai gan klases Pulkstenis izmantošana nav obligāta, šī funkcija ļauj mums pārbaudīt jūsu kodu citām laika zonām vai izmantojot fiksētu pulksteni, kurā laiks nemainās.

java.time.Instant: Tas attēlo nanosekundes sākumu laika skalā (kopš EPOCH) un noder laikspiedola ģenerēšanai, lai attēlotu mašīnas laiku. Momentam, kas notiek pirms laikmeta, ir negatīva vērtība, un momentam, kas notiek pēc laikmeta, ir pozitīva vērtība.

java.time.Duration : Atšķirība starp diviem mirkļiem un tiek mērīta sekundēs vai nanosekundēs, un netiek izmantotas uz datumu balstītas konstrukcijas, piemēram, gadi, mēneši un dienas, lai gan klase nodrošina metodes, kas pārvērš dienās, stundās un minūtēs.

java.time.Period : To izmanto, lai definētu atšķirību starp datumiem datuma vērtībās (gadi, mēneši, dienas).

java.time.ZoneId : Tajā ir norādīts laika joslas identifikators un noteikumi konvertēšanai starp Instant un LocalDateTime.

java.time.ZoneOffset: Tajā aprakstīta laika joslas nobīde no Griničas/UTC laika.

java.time.format.DateTimeFormatter: Tas nāk klajā ar dažādiem iepriekš definētiem formatētājiem, vai arī mēs varam definēt savu. Tam ir parse () vai format () metode datuma un laika vērtību parsēšanai un formatēšanai.