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

Función que devuelve fecha u hora según el formato

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".

Conclusión

Te invito a ver más sobre Android, Java o Kotlin.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto