Els paquets java.time, java.util, java.sql i java.text contenen classes per representar la data i l'hora. Les classes següents són importants per tractar la data a Java.
API de data/hora de Java 8
Java ha introduït una nova API de data i hora des de Java 8. El paquet java.time conté classes de data i hora de Java 8.
- classe java.time.LocalDate
- classe java.time.LocalTime
- classe java.time.LocalDateTime
- java.time.MonthDay classe
- classe java.time.OffsetTime
- classe java.time.OffsetDateTime
- classe java.time.Clock
- classe java.time.ZonedDateTime
- classe java.time.ZoneId
- classe java.time.ZoneOffset
- java.time.Any classe
- classe java.time.YearMonth
- classe java.time.Period
- java.time.Durada de la classe
- java.time.Classe instantània
- java.time.DayOfWeek enumeració
- java.time.Month enumeració
API de data/hora clàssica
Però també és útil l'API clàssica o antiga de Java Date. Vegem la llista de classes clàssiques de data i hora.
- java.util.Date classe
- classe java.sql.Date
- classe java.util.Calendar
- classe java.util.GregorianCalendar
- classe java.util.TimeZone
- classe java.sql.Time
- classe java.sql.Timestamp
Format de data i hora
Podem formatar la data i l'hora en Java utilitzant les classes següents:
API de data i hora de Java
Java proporciona la funcionalitat de data i hora amb l'ajuda de dos paquets java.time i java.util. El paquet java.time s'introdueix a Java 8, i les classes recentment introduïdes intenten superar les deficiències de les classes heretades java.util.Date i java.util.Calendar.
Classes clàssiques de l'API de data i hora
Les classes principals abans del llançament de Java 8 eren:
quantes ciutats EUA
Java.lang.System: La classe proporciona el mètode currentTimeMillis() que retorna l'hora actual en mil·lisegons. Mostra la data i l'hora actuals en mil·lisegons des de l'1 de gener de 1970.
java.util.Date: S'utilitza per mostrar un instant de temps específic, amb unitat de mil·lisegon.
java.util.Calendar: És una classe abstracta que proporciona mètodes per convertir entre instàncies i manipular els camps del calendari de diferents maneres.
java.text.SimpleDateFormat: És una classe que s'utilitza per formatar i analitzar les dates d'una manera predefinida o un patró definit per l'usuari.
java.util.TimeZone: Representa una compensació de zona horària i també calcula l'horari d'estiu.
Inconvenients de les API de data/hora existents
Nova API de data i hora a Java 8
La nova API de data ajuda a superar els inconvenients esmentats anteriorment amb les classes heretades. Inclou les següents classes:
java.time.LocalDate: Representa un any-mes-dia al calendari ISO i és útil per representar una data sense hora. Es pot utilitzar per representar només informació d'una data, com ara una data de naixement o una data de casament.
java.time.LocalTime: Tracta només a temps. És útil per representar l'hora del dia basada en humans, com ara l'horari de les pel·lícules o l'hora d'obertura i tancament de la biblioteca local.
java.time.LocalDateTime: Gestiona tant la data com l'hora, sense una zona horària. És una combinació de LocalDate amb LocalTime.
java.time.ZonedDateTime: Combina la classe LocalDateTime amb la informació de zona proporcionada a la classe ZoneId. Representa una marca completa de la data i l'hora juntament amb la informació de la zona horària.
java.time.OffsetTime: Gestiona l'hora amb un desplaçament de zona horària corresponent de Greenwich/UTC, sense un identificador de zona horària.
java.time.OffsetDateTime: Gestiona una data i hora amb un desplaçament de zona horària corresponent de Greenwich/UTC, sense un identificador de zona horària.
java.time.Clock : Proporciona accés a l'instant, la data i l'hora actuals en qualsevol zona horària determinada. Tot i que l'ús de la classe Clock és opcional, aquesta característica ens permet provar el vostre codi per a altres zones horàries, o utilitzant un rellotge fix, on l'hora no canvia.
java.time.Instant : Representa l'inici d'un nanosegon a la línia de temps (des d'EPOCH) i és útil per generar una marca de temps per representar el temps de la màquina. Un instant que passa abans de l'època té un valor negatiu, i un instant que passa després de l'època té un valor positiu.
java.time.Durada : Diferència entre dos instants i mesura en segons o nanosegons i no utilitza construccions basades en dates com ara anys, mesos i dies, tot i que la classe proporciona mètodes que es converteixen en dies, hores i minuts.
java.time.Period : S'utilitza per definir la diferència entre dates en valors basats en dates (anys, mesos, dies).
java.time.ZoneId : Indica un identificador de zona horària i proporciona regles per convertir entre un Instant i un LocalDateTime.
java.time.ZoneOffset : Descriu un desplaçament de zona horària respecte a l'hora de Greenwich/UTC.
java.time.format.DateTimeFormatter : Ofereix diversos formattadors predefinits, o podem definir el nostre. Té el mètode parse() o format() per analitzar i donar format als valors de data i hora.