Pachetele java.time, java.util, java.sql și java.text conțin clase pentru reprezentarea datei și orei. Următoarele clase sunt importante pentru a trata data în Java.
Java 8 Data/Time API
Java a introdus un nou API Date and Time începând cu Java 8. Pachetul java.time conține clase Java 8 Date și Ora.
- Clasa java.time.LocalDate
- Clasa java.time.LocalTime
- Clasa java.time.LocalDateTime
- Clasa java.time.MonthDay
- Clasa java.time.OffsetTime
- Clasa java.time.OffsetDateTime
- java.time.Clock class
- Clasa java.time.ZonedDateTime
- Clasa java.time.ZoneId
- Clasa java.time.ZoneOffset
- java.time.Clasa anuală
- Clasa java.time.YearMonth
- java.time.Period class
- java.time.Clasa de durată
- java.time.Clasa instant
- java.time.DayOfWeek enumerare
- java.time.Month enum
API-ul clasic de dată/ora
Dar API-ul Java Date clasic sau vechi este de asemenea util. Să vedem lista claselor clasice de date și oră.
- java.util.Date class
- Clasa java.sql.Date
- Clasa java.util.Calendar
- Clasa java.util.GregorianCalendar
- Clasa java.util.TimeZone
- Clasa java.sql.Time
- Clasa java.sql.Timestamp
Formatarea datei și orei
Putem formata data și ora în Java utilizând următoarele clase:
API-uri Java Data și Ora
Java oferă funcționalitatea de dată și oră cu ajutorul a două pachete java.time și java.util. Pachetul java.time este introdus în Java 8, iar clasele nou introduse încearcă să depășească deficiențele claselor moștenite java.util.Date și java.util.Calendar.
Clasele clasice API Date Time
Clasele primare înainte de lansarea Java 8 au fost:
port de ascultare
Java.lang.System: Clasa oferă metoda currentTimeMillis() care returnează ora curentă în milisecunde. Afișează data și ora curente în milisecunde de la 1 ianuarie 1970.
java.util.Date: Este folosit pentru a afișa un anumit moment de timp, cu unitatea de milisecundă.
java.util.Calendar: Este o clasă abstractă care oferă metode de conversie între instanțe și de manipulare a câmpurilor calendarului în moduri diferite.
java.text.SimpleDateFormat: Este o clasă care este folosită pentru a formata și a analiza datele într-o manieră predefinită sau un model definit de utilizator.
java.util.TimeZone: Reprezintă o compensare a fusului orar și, de asemenea, calculează ora de vară.
Dezavantajele API-urilor date/ora existente
Noua interfață API Date Time în Java 8
Noul API pentru date ajută la depășirea dezavantajelor menționate mai sus cu clasele moștenite. Acesta include următoarele clase:
java.time.LocalDate: Reprezintă un an-lună-zi în calendarul ISO și este util pentru a reprezenta o dată fără oră. Poate fi folosit pentru a reprezenta doar informații despre o dată, cum ar fi data nașterii sau data nunții.
java.time.LocalTime: Se ocupă doar în timp. Este util pentru reprezentarea orei umane din zi, cum ar fi ora filmelor sau orele de deschidere și închidere ale bibliotecii locale.
java.time.LocalDateTime: Se ocupă atât de dată, cât și de oră, fără un fus orar. Este o combinație de LocalDate cu LocalTime.
java.time.ZonedDateTime: Combină clasa LocalDateTime cu informațiile de zonă oferite în clasa ZoneId. Reprezintă o ștampilă completă a datei și orei împreună cu informații despre fusul orar.
java.time.OffsetTime: Se ocupă de ora cu o compensare a fusului orar corespunzător față de Greenwich/UTC, fără un ID de fus orar.
java.time.OffsetDateTime: Se ocupă de o dată și oră cu o decalare a fusului orar corespunzător față de Greenwich/UTC, fără un ID de fus orar.
java.time.Clock : Oferă acces la momentul curent, data și ora în orice fus orar dat. Deși utilizarea clasei Clock este opțională, această caracteristică ne permite să testăm codul pentru alte fusuri orare sau folosind un ceas fix, unde ora nu se schimbă.
java.time.Instant : Reprezintă începutul unei nanosecunde pe linia temporală (de la EPOCH) și utilă pentru generarea unui marcaj de timp pentru a reprezenta timpul mașinii. Un moment care apare înaintea epocii are o valoare negativă, iar un moment care apare după epocă are o valoare pozitivă.
java.time.Duration : Diferența dintre două instante și măsurată în secunde sau nanosecunde și nu utilizează constructe bazate pe dată, cum ar fi ani, luni și zile, deși clasa oferă metode care se convertesc în zile, ore și minute.
java.time.Period : Este folosit pentru a defini diferența dintre date în valori bazate pe dată (ani, luni, zile).
java.time.ZoneId : Acesta indică un identificator de fus orar și oferă reguli pentru conversia între un Instant și un LocalDateTime.
java.time.ZoneOffset : Descrie un decalaj al fusului orar față de ora Greenwich/UTC.
java.time.format.DateTimeFormatter : Vine cu diverse formatatoare predefinite sau putem defini pe al nostru. Are metoda parse() sau format() pentru analizarea și formatarea valorilor date și oră.