¿Cuál es la diferencia entre el calendario de Java vs calendario de Android

Islam Assem:

Soy nuevo en Android y estoy tratando de obtener la fecha actual, pero el Android Calendarclase requiere API 24. Me necesidad de apoyar dispositivo más antiguo y de la Timeclase está obsoleta desde la API 22.

El problema es cómo llegar a la fecha actual en la API de 23 años y lo resolvió mediante java.util.Calendarel cual funciona en todas las versiones. Entonces, ¿qué debería utilizar, calendario Android o calendario de Java?

Tenga en cuenta que el día, el mes y el año son sólo números enteros cuando se utiliza el calendario de Android.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    day =android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.DAY_OF_MONTH);
    month = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.MONTH);
    year = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.YEAR);
}
else {
    day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
    month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
    year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
}

Y cuando sólo se utiliza el calendario de Java que no hay necesidad de comprobar la versión de la API

day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
Albahaca Bourque:

tl; dr

Entonces, ¿qué debería utilizar, calendario Android o calendario de Java?

Ninguno.

Utilizar las modernas java.time clases. Disponible en el back-puerto para Android <26.

LocalDate.of( 2018 , Month.JANUARY , 23 ) 

Evitar las clases heredadas

En Java, la terrible java.util.Calendarclase (y clases relacionadas, Dateetc.) se suplantaron hace años por los java.time clases. Ahora disponible en Android 26 y posteriores.

El ThreeTen-Backport biblioteca traer mosto de la java.time funcionalidad para Java 6 y 7 usando API prácticamente idénticos. Ese proyecto está adaptado además para Android <26 en el ThreeTenABP proyecto.

Recomiendo encarecidamente evitar las clases heredadas, en lugar de utilizar solamente las java.time clases. Estas clases modernas están definidas en JSR 310, y guiados por el mismo hombre que dirigió el líder en la industria Joda-Time biblioteca, Stephen Colebourne. Así que tienen un excelente diseño basado en muchos años de experiencia. Usando ThreeTenABP es bien vale la pena la molestia de añadir la biblioteca a su proyecto.

La fecha sólo, año-mes-día, sin un tiempo del día y sin una zona horaria, utilice la LocalDateclase.

LocalDate ld = LocalDate.of( 2018 , 1 , 23 ) ; 

O utilizar la mano Monthde enumeración para más legibilidad.

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ; 

sobre java.time

El java.time marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como java.util.Date, Calendar, y SimpleDateFormat.

La Joda-Time proyecto, ahora en modo de mantenimiento , asesora a la migración a los java.time clases.

Para obtener más información, consulte el Tutorial de Oracle . Y la búsqueda de desbordamiento de pila durante muchos ejemplos y explicaciones. Especificación es JSR 310 .

Es posible intercambiar java.time objetos directamente con su base de datos. Utilizar un controlador JDBC compatible con JDBC 4.2 o posterior. No hay necesidad de cadenas, sin necesidad de java.sql.*clases.

Dónde obtener las clases java.time?

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=188740&siteId=1
Recomendado
Clasificación