En este post te mostraré cómo obtener la fecha y hora actual en Android, usando la zona horaria que tú prefieras. Para ello vamos a usar SimpleDateFormat
y cualquier formato válido.
La función ayudante para obtener fecha y hora en Android
Primero veamos una función que nos dará cualquier fecha u hora según el formato que especifiquemos, así como la zona horaria.
Queda así:
@SuppressLint("SimpleDateFormat")
public static String obtenerFechaConFormato(String formato, String zonaHoraria) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat sdf;
sdf = new SimpleDateFormat(formato);
sdf.setTimeZone(TimeZone.getTimeZone(zonaHoraria));
return sdf.format(date);
}
La función devolverá el tiempo actual según el formato y zona horaria. Veamos las otras funciones.
Obtener fecha
Para obtener solo la fecha, la invocamos así:
public static String obtenerFechaActual(String zonaHoraria) {
String formato = "yyyy-MM-dd";
return obtenerFechaConFormato(formato, zonaHoraria);
}
Si te preocupa la zona horaria, tranquilo, en un momento la veremos. En este caso obtendríamos la fecha en formato yyyy-MM-dd
es decir, algo como 2020-01-16, pero puedes usar otro formato si quieres.
Obtener la hora
Del mismo modo tenemos una función que invoca a la primera que vimos en este post. Para obtenerla se hace lo siguiente:
public static String obtenerHoraActual(String zonaHoraria) {
String formato = "HH:mm:ss";
return obtenerFechaConFormato(formato, zonaHoraria);
}
Lo único que cambia es el formato, ahora es HH:mm:ss
que daría algo como 15:45:20, de igual forma veremos la zona horaria más tarde.
Invocar función para obtener la fecha y hora en Android
Yo tengo todos estos métodos en una clase llamado Utiles
, y queda así:
class Utiles {
public static String obtenerHoraActual(String zonaHoraria) {
String formato = "HH:mm:ss";
return Utiles.obtenerFechaConFormato(formato, zonaHoraria);
}
public static String obtenerFechaActual(String zonaHoraria) {
String formato = "yyyy-MM-dd";
return Utiles.obtenerFechaConFormato(formato, zonaHoraria);
}
@SuppressLint("SimpleDateFormat")
public static String obtenerFechaConFormato(String formato, String zonaHoraria) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat sdf;
sdf = new SimpleDateFormat(formato);
sdf.setTimeZone(TimeZone.getTimeZone(zonaHoraria));
return sdf.format(date);
}
}
Ahora, cada que quiero obtenerla simplemente hago:
Utiles.obtenerFechaActual("America/Mexico_City");
Utiles.obtenerHoraActual("America/Mexico_City");
Sobre la zona horaria es de México, pero por ejemplo, para España utilizo "GMT+1"
.