I pacchetti java.time, java.util, java.sql e java.text contengono classi per rappresentare data e ora. Le seguenti classi sono importanti per gestire la data in Java.
API data/ora Java 8
Java ha introdotto una nuova API Data e ora a partire da Java 8. Il pacchetto java.time contiene le classi Data e ora Java 8.
- classe java.time.LocalDate
- classe java.time.LocalTime
- classe java.time.LocalDateTime
- classe java.time.MonthDay
- classe java.time.OffsetTime
- classe java.time.OffsetDateTime
- classe java.time.Clock
- classe java.time.ZonedDateTime
- classe java.time.ZoneId
- classe java.time.ZoneOffset
- classe java.time.Year
- classe java.time.YearMonth
- classe java.time.Period
- classe java.time.Duration
- classe java.time.Instant
- enumerazione java.time.DayOfWeek
- java.time.Month enum
API data/ora classica
Ma è utile anche la classica o vecchia API Java Date. Vediamo l'elenco delle classi classiche di Data e Ora.
- classe java.util.Date
- classe java.sql.Date
- classe java.util.Calendar
- classe java.util.GregorianCalendar
- classe java.util.TimeZone
- classe java.sql.Time
- classe java.sql.Timestamp
Formattazione di data e ora
Possiamo formattare data e ora in Java utilizzando le seguenti classi:
API Java per data e ora
Java fornisce la funzionalità di data e ora con l'aiuto di due pacchetti java.time e java.util. Il pacchetto java.time viene introdotto in Java 8 e le classi appena introdotte tentano di superare le carenze delle classi legacy java.util.Date e java.util.Calendar.
Classi API data/ora classiche
Le classi principali prima del rilascio di Java 8 erano:
Shilpa Shetty
Java.lang.System: La classe fornisce il metodo currentTimeMillis() che restituisce l'ora corrente in millisecondi. Mostra la data e l'ora attuali in millisecondi dal 1 gennaio 1970.
java.util.Data: Viene utilizzato per mostrare un istante di tempo specifico, con unità di millisecondo.
java.util.Calendar: È una classe astratta che fornisce metodi per la conversione tra istanze e la manipolazione dei campi del calendario in modi diversi.
java.text.SimpleDateFormat: È una classe utilizzata per formattare e analizzare le date in un modo predefinito o in uno schema definito dall'utente.
java.util.TimeZone: Rappresenta una differenza di fuso orario e calcola anche l'ora legale.
Svantaggi delle API Data/Ora esistenti
Nuova API Data/Ora in Java 8
La nuova API della data aiuta a superare gli inconvenienti sopra menzionati con le classi legacy. Comprende le seguenti classi:
java.time.LocalDate: Rappresenta un anno-mese-giorno nel calendario ISO ed è utile per rappresentare una data senza ora. Può essere utilizzato per rappresentare solo informazioni sulla data, ad esempio una data di nascita o una data di matrimonio.
java.time.LocalTime: Si tratta solo in tempo. È utile per rappresentare l'ora del giorno basata sull'uomo, come gli orari dei film o gli orari di apertura e chiusura della biblioteca locale.
java.time.LocalDateTime: Gestisce sia la data che l'ora, senza fuso orario. È una combinazione di LocalDate con LocalTime.
java.time.ZonedDateTime: Combina la classe LocalDateTime con le informazioni sulla zona fornite nella classe ZoneId. Rappresenta un timestamp completo della data insieme alle informazioni sul fuso orario.
java.time.OffsetTime: Gestisce l'ora con una differenza di fuso orario corrispondente da Greenwich/UTC, senza un ID di fuso orario.
java.time.OffsetDateTime: Gestisce una data e un'ora con la differenza di fuso orario corrispondente rispetto a Greenwich/UTC, senza un ID di fuso orario.
java.time.Clock : Fornisce l'accesso all'istante, alla data e all'ora correnti in qualsiasi fuso orario. Sebbene l'uso della classe Clock sia facoltativo, questa funzionalità ci consente di testare il codice per altri fusi orari o utilizzando un orologio fisso, dove l'ora non cambia.
java.time.Instant: Rappresenta l'inizio di un nanosecondo sulla linea temporale (da EPOCH) ed è utile per generare un timestamp per rappresentare il tempo della macchina. Un istante che si verifica prima dell'epoca ha un valore negativo, mentre un istante che si verifica dopo l'epoca ha un valore positivo.
java.time.Durata: Differenza tra due istanti e misurata in secondi o nanosecondi e non utilizza costrutti basati sulla data come anni, mesi e giorni, sebbene la classe fornisca metodi che convertono in giorni, ore e minuti.
java.time.Periodo: Viene utilizzato per definire la differenza tra le date in valori basati sulla data (anni, mesi, giorni).
java.time.ZoneId: Indica un identificatore di fuso orario e fornisce regole per la conversione tra un Instant e un LocalDateTime.
java.time.ZoneOffset: Descrive un fuso orario diverso dall'ora di Greenwich/UTC.
java.time.format.DateTimeFormatter: Viene fornito con vari formattatori predefiniti oppure possiamo definirne uno nostro. Ha il metodo parse() o format() per l'analisi e la formattazione dei valori di data e ora.