Los paquetes java.time, java.util, java.sql y java.text contienen clases para representar la fecha y la hora. Las siguientes clases son importantes para tratar con fechas en Java.
API de fecha/hora de Java 8
Java ha introducido una nueva API de fecha y hora desde Java 8. El paquete java.time contiene clases de fecha y hora de Java 8.
- clase java.time.LocalDate
- clase java.time.LocalTime
- clase java.time.LocalDateTime
- clase java.time.MonthDay
- clase java.time.OffsetTime
- clase java.time.OffsetDateTime
- clase java.time.Clock
- clase java.time.ZonedDateTime
- clase java.time.ZoneId
- clase java.time.ZoneOffset
- clase java.time.Year
- clase java.time.YearMonth
- clase java.time.Period
- clase java.time.Duration
- clase java.time.Instant
- enumeración java.time.DayOfWeek
- enumeración java.time.Month
API clásica de fecha/hora
Pero la API Java Date clásica o antigua también es útil. Veamos la lista de clases clásicas de Fecha y Hora.
- clase java.util.Date
- clase java.sql.Date
- clase java.util.Calendar
- clase java.util.GregorianCalendar
- clase java.util.TimeZone
- clase java.sql.Time
- clase java.sql.Timestamp
Formatear fecha y hora
Podemos formatear la fecha y la hora en Java usando las siguientes clases:
API de fecha y hora de Java
Java proporciona la funcionalidad de fecha y hora con la ayuda de dos paquetes java.time y java.util. El paquete java.time se introduce en Java 8 y las clases recién introducidas intentan superar las deficiencias de las clases heredadas java.util.Date y java.util.Calendar.
Clases clásicas de API de fecha y hora
Las clases principales antes del lanzamiento de Java 8 eran:
descargar videos de youtube en vlc
Sistema.idioma.java: La clase proporciona el método currentTimeMillis() que devuelve la hora actual en milisegundos. Muestra la fecha y hora actuales en milisegundos desde el 1 de enero de 1970.
java.util.Date: Se utiliza para mostrar un instante de tiempo específico, con unidades de milisegundo.
java.util.Calendario: Es una clase abstracta que proporciona métodos para convertir entre instancias y manipular los campos del calendario de diferentes maneras.
java.text.SimpleDateFormat: Es una clase que se utiliza para formatear y analizar las fechas de una manera predefinida o un patrón definido por el usuario.
java.util.TimeZone: Representa un desplazamiento de zona horaria y también calcula el horario de verano.
Inconvenientes de las API de fecha/hora existentes
Nueva API de fecha y hora en Java 8
La nueva API de fecha ayuda a superar los inconvenientes mencionados anteriormente con las clases heredadas. Incluye las siguientes clases:
java.time.LocalDate: Representa un año, mes y día en el calendario ISO y es útil para representar una fecha sin hora. Se puede utilizar para representar información de fecha únicamente, como la fecha de nacimiento o la fecha de boda.
java.time.LocalTime: Se trata sólo en el tiempo. Es útil para representar la hora del día basada en humanos, como los horarios de cine o los horarios de apertura y cierre de la biblioteca local.
java.time.LocalDateTime: Maneja tanto fecha como hora, sin zona horaria. Es una combinación de LocalDate con LocalTime.
java.time.ZonedDateTime: Combina la clase LocalDateTime con la información de zona proporcionada en la clase ZoneId. Representa una marca de fecha y hora completa junto con información de zona horaria.
java.time.OffsetTime: Maneja la hora con una zona horaria correspondiente desplazada de Greenwich/UTC, sin un ID de zona horaria.
java.time.OffsetDateTime: Maneja una fecha y hora con una zona horaria correspondiente desplazada de Greenwich/UTC, sin un ID de zona horaria.
java.time.Reloj: Proporciona acceso al instante, la fecha y la hora actuales en cualquier zona horaria determinada. Aunque el uso de la clase Reloj es opcional, esta característica nos permite probar su código para otras zonas horarias o mediante el uso de un reloj fijo, donde la hora no cambia.
java.time.Instant: Representa el inicio de un nanosegundo en la línea de tiempo (desde EPOCH) y es útil para generar una marca de tiempo para representar el tiempo de la máquina. Un instante que ocurre antes de la época tiene un valor negativo y un instante que ocurre después de la época tiene un valor positivo.
java.time.Duración: Diferencia entre dos instantes y se mide en segundos o nanosegundos y no utiliza construcciones basadas en fechas como años, meses y días, aunque la clase proporciona métodos que convierten a días, horas y minutos.
java.time.Period: Se utiliza para definir la diferencia entre fechas en valores basados en fechas (años, meses, días).
java.time.ZoneId: Indica un identificador de zona horaria y proporciona reglas para convertir entre Instant y LocalDateTime.
java.time.ZoneOffset: Describe una zona horaria diferenciada de la hora de Greenwich/UTC.
java.time.format.DateTimeFormatter: Viene con varios formateadores predefinidos, o podemos definir el nuestro. Tiene el método parse() o format() para analizar y formatear los valores de fecha y hora.