Bienvenidos sean a este post, hoy hablaremos sobre una serie de clases que nos permitira trabajar con la fecha y hora en nuestras aplicaciones de Android por medio de Java, para ello hablaremos de tres clases que nos permiten trabajar sin mayores inconvenientes.

Anuncios

Date

Esta clase representa un instante expresada en milisegundos, este sistema es independiente de la zona horaria (conocido como UTC), este estandar utiliza el meridiano de Greenwich independiente de donde nos encontremos y de esta forma evitamos los problemas que aparecen cuando se comunican dos sistemas con zonas horarias distintas.

Para representar un instante de tiempo se suele usar la codificacion de tiempo llamada Tiempo UNIX, la cual consiste en medir la cantidad de tiempo transcurrida desde el 1° de enero de 1970, para almacenar esta informacion se utiliza un numero entero de 64 Bits, en Java tenemos la palabra reservada llamada long la cual representa un valor de este tipo, y para obtener el tiempo actual en este formato debemos usar el metodo currentTimeMillis(), veamos un ejemplo de sintaxis:

long ahora = System.currentTimeMillis();
Date fecha = new Date(ahora);

Si desean saber un poco mas sobre esta clase les recomiendo este post y este otro post para ver con mas detalles, pasemos a la siguiente clase.

DateFormat

La clase anterior esta pensada para contar el tiempo en cualquier parte del planeta lo cual facilita al dispositivo poder manipularla, sin embargo nosotros utilizamos una medicion del tiempo basado en la zona horaria donde habitemos, como consecuencia para representar el tiempo o solicitar una fecha a la persona deberas utilizar una representacion a la cual esta acostumbrado y para ello usamos la interfaz DateFormat o su derivado llamado SimpleDateFormat que nos seran de gran ayuda para este proposito, veamos un ejemplo aplicando el objeto creado anteriormente:

DateFormat df = new SimpleDateFormat("dd/MM/yy");
String salida = df.format(fecha);

Con esto tomamos el valor almacenado en fecha y lo transformamos en un salida de tipo dia/mes/año (p.e. 23/08/19), si desean saber un poco mas les recomiendo este post y este otro post, continuemos con la ultima clase.

Anuncios

Calendar

Como Date solo representa un instante de tiempo basado en Tiempo Unix y este es de tipo Entero (o long) y para el dispositivo es mas que suficiente, en cambio nosotros como seres humanos necesitamos representar ese instante con los campos dia, mes, año, horas, minutos y segundos y para esto ultimo debemos usar la clase Calendar y a diferencia de la clase Date esta depende de la configuracion local del dispositivo (locale), veamos el siguiente ejemplo de como obtener la fecha actual por medio de Calendar:

Calendar calendario = Calendar.getInstance();
calendario.setTimeInMillis(ahora);
int hora = calendario.get(Calendar.HOUR_OF_DAY);
int minuto = calendario.get(Calendar.MINUTE);

Para poder utilizar esto debemos usar getInstance() en el momento de crear nuestro objeto, nuestro siguiente paso es setear el tiempo Unix (o el momento) por medio de setTimeInMillis() con el valor almacenado en ahora a nuestro nuevo objeto, por ultimo crearemos dos variables la primera donde almacenaremos la hora y en la segunda los minutos, esto gracias al metodo get() usado en nuestro objeto (calendario) y gracias a la constante respectiva (HOUR_OF_DAY para el dia y MINUTE para los minutos).

Esta clase es abstracta y te permite trabajar con cualquier calendario pero como el calendario difundido mundialmente es el gregoriano al cual lo definimos en la clase GregorianCalendar, si desean saber mas les recomiendo este post.

Anuncios

En resumen, hoy hemos visto como es la clase Date, sus distintas derivadas que nos permiten dar un mejor formato a la misma, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00