Clase de fecha en Java

Sobre la depreciación: Aunque la mayoría de las partes de java.util.Date están obsoletas desde Java 1.1, la clase en sí (y java.util.Calendar, también) no están oficialmente obsoletas, sólo declaradas como legado de facto. El soporte de las clases antiguas sigue siendo importante para el objetivo de compatibilidad hacia atrás con el código heredado. Así que Oracle probablemente no dejará de dar soporte en ningún momento en el futuro. Pero quizás Oracle aplique estrategias de depreciación más sofisticadas.

Desarrollo futuro: Es interesante que la versión de Java-8 no sólo ha incorporado una fecha/hora-API completamente nueva (java.time), sino que también ha visto algunas mejoras en java.util.Calendar, por ejemplo Calendar.Builder o SHORT_STANDALONE, etc. Bueno, sólo puedo especular pero esto también parece indicar que Oracle no está dispuesto a dejar de dar soporte a la antigua API en un futuro próximo.

¿Está obsoleta la clase de fecha?

A partir del JDK 1.1, la clase Calendar debería utilizarse para convertir entre fechas y campos de tiempo y la clase DateFormat debería utilizarse para formatear y analizar cadenas de fechas. Los métodos correspondientes de Date están obsoletos.

¿Está la clase date obsoleta en Java?

Se intentaron mejoras, de ahí las depreciaciones que has encontrado. Lamentablemente, los intentos de mejora fracasaron en gran medida. Debería evitar estas clases por completo. Son suplantadas en Java 8 por nuevas clases.

¿El calendario está obsoleto?

Calendar , también) no están oficialmente obsoletas, sólo declaradas como legado de facto. El soporte de las clases antiguas sigue siendo importante para el objetivo de compatibilidad con el código heredado.

Objeto fecha Java

Este post es un intento de reducir el número de veces que tengo que explicar cosas en los comentarios de Stack Overflow. Es posible que lo leas a través de un enlace de Stack Overflow – tengo la intención de referirme a este post con frecuencia en los comentarios. Ten en cuenta que este post no trata principalmente sobre el manejo de texto – mira mi post sobre errores comunes en el formato y análisis de fecha/hora para más detalles sobre eso.

leer  ¿Cómo se crea un objeto de una clase?

Cuando hablo de un “instante” me refiero al tipo de concepto que podría usarse para identificar cuándo ocurrió algo. (Podría ser en el futuro, pero es más fácil pensar en términos de un suceso pasado). Es independiente de la zona horaria y del sistema de calendario, por lo que varias personas que utilicen sus representaciones horarias “locales” podrían hablar de ello de diferentes maneras.

Utilicemos un ejemplo muy concreto de algo que ocurrió en algún lugar que no utiliza ninguna zona horaria con la que estemos familiarizados: Neil Armstrong caminando por la luna. La caminata por la luna comenzó en un instante concreto en el tiempo: si varias personas de todo el mundo estuvieran observando al mismo tiempo, todas dirían (más o menos) “puedo ver lo que está pasando ahora” simultáneamente.

¿Qué son las características obsoletas?

El término “obsoleto” hace referencia a una característica del software o del lenguaje de programación que se tolera o se admite, pero que no se recomienda. Un atributo o característica obsoleta es aquella que puede desaparecer con el tiempo, pero que sigue utilizándose mientras tanto.

¿Está obsoleto el formato Simpledate?

Desaprobado. A partir de la versión 1.1 del JDK, se sustituye por DateFormat. parse(String s).

¿La fecha de Java está en UTC?

La fecha es el número de milisegundos desde la época de Unix, que se produjo en la medianoche del 1 de enero de 1970, UTC. La misma época podría describirse también en otras zonas horarias, pero la descripción tradicional es en términos de UTC. Como es un número de milisegundos desde una época fija, el valor dentro de java.

leer  ¿Qué es citronela de Java?

Formato de fecha en Java

Java 8 fue lanzado hace 3 años (marzo de 2014) y trajo un montón de mejoras en el lenguaje. Una de ellas es la nueva API de fecha y hora para Java, también conocida como JSR-310. Representa una API muy rica para trabajar con fechas y horas.  Sin embargo, veo que muchos desarrolladores siguen utilizando las viejas clases java.util.Date y java.util.Calendar en el código que escriben hoy.

Claro, todavía tenemos que interactuar con las aplicaciones de legado y las viejas APIs, utilizando las clases mencionadas. Pero esto no significa que no podamos utilizar la nueva API de java.time al escribir nuevo código o refactorizar el antiguo. ¿Por qué nos gustaría hacerlo? Bueno, el uso de la nueva API es más simple, más directo, flexible, más fácil de entender, las clases son inmutables y por lo tanto seguro de hilo … sólo para mencionar algunos.

java.util.Date tiene algunos flujos de diseño serios, desde el día en que se introdujo. Muchos de sus métodos fueron obviados desde Java 1.1 y portados a java.util.Calendar y java.util.GregorianCalendar (abstractos).

java.util.Date es mal entendido por los desarrolladores.  Los autores de las bibliotecas han abusado de él, lo que aumenta la confusión.  Una instancia de Date representa un instante en el tiempo, no una fecha. Es importante que esto signifique:

¿Está anticuada la fecha de Java Util?

util. Date tiene algunos flujos de diseño serios, desde el día en que fue introducido. Muchos de sus métodos fueron desaprobados desde Java 1.1 y portados a java (abstracto) … Date es mal entendido por los desarrolladores.

¿La fecha de Java incluye la hora?

No se guarda ningún dato de la hora. De hecho, la fecha se almacena como milisegundos desde el 1 de enero de 1970 00:00:00 GMT y la parte del tiempo se normaliza, es decir, se pone a cero. Básicamente, es una envoltura alrededor de java. util.

leer  ¿Cuándo usar clases anidadas Java?

¿Cuál de los siguientes métodos devuelve una cadena formateada que representa una fecha?

El método format() de la clase DateFormat en Java se utiliza para formatear un objeto Date dado en una cadena que representa la Fecha/Hora.

Fecha en Java

La clase java.util.Date no está realmente obsoleta, sólo ese constructor, junto con un par de otros constructores/métodos están obsoletos. Fue desaprobada porque ese tipo de uso no funciona bien con la internacionalización. En su lugar se debe utilizar la clase Calendar:

Las clases java.util.Date, java.util.Calendar, y java.text.SimpleDateFormat se apresuraron demasiado cuando Java se lanzó y evolucionó. Las clases no estaban bien diseñadas ni implementadas. Se intentó mejorarlas, de ahí las depreciaciones que has encontrado. Desgraciadamente, los intentos de mejora fracasaron en gran medida. Deberías evitar estas clases por completo. Son suplantadas en Java 8 por nuevas clases.

Un java.util.Date tiene una parte de fecha y otra de hora. Has ignorado la parte de tiempo en tu código. Así que la clase Date tomará el comienzo del día tal y como lo define la zona horaria por defecto de tu JVM y aplicará esa hora al objeto Date. Así que los resultados de tu código variarán dependiendo de la máquina que se ejecute o de la zona horaria que se establezca. Probablemente no es lo que quieres.

Por avivcas