Devolver una fecha y hora local en formato UTC con Java 8

Con Java 8 podemos devolver un Timestamp en UTC dada una fecha/hora local y el time zone de la misma.

Si además le aplicamos un formato con un objeto DateTimeFormatter, podemos devolver la fecha y la hora como deseemos.

 /**
     * Convierte la fecha con el time zone indicado a UTC
     * @param localDateTime Fecha y hora local
     * @param timeZone Time zone de la hora a convertir
     * @return Devuelve un objeto Timpestamp con la hora en UTC
     */
    public static Timestamp dateToUTCTimeStamp(LocalDateTime localDateTime, String timeZone){

        ZonedDateTime zonedFechaExpiracion = ZonedDateTime
                .now(ZoneId.of(timeZone)) // fecha y hora actual en la delegación
                .with(localDateTime) // se asigna la fecha y hora que se recibe
                .withZoneSameInstant(ZoneOffset.UTC); // convertimos a formato UTC

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        return Timestamp.valueOf(zonedFechaExpiracion.format(formatter));

    }
Scroll al inicio