Especificar la zona horaria de ZonedDateTime sin cambiar la fecha real

MatMat:

Tengo un objeto Date que contiene una fecha (la fecha no corriente) y necesito especificar alguna manera que esta fecha es la hora UTC y después convertirlo a "Europa / París", que es +1 hora.

public static LocalDateTime toLocalDateTime(Date date){
    return ZonedDateTime.of(LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC), ZoneId.of("Europe/Paris")).toLocalDateTime();
}

Dada una fecha de "08/11/2018 15:00:00" Esto convierte la fecha en "08/11/2018 14:00:00". Lo necesito convertir de UTC a Europa / París - no al revés.

Charles Dowbecki:

Se podría utilizar ZonedDateTime.withZoneSameInstant()el método de pasar de UTC a la hora de París:

Date date = new Date();
ZonedDateTime utc = date.toInstant().atZone(ZoneOffset.UTC);
ZonedDateTime paris = utc.withZoneSameInstant(ZoneId.of("Europe/Paris"));
System.out.println(utc);
System.out.println(paris);
System.out.println(paris.toLocalDateTime());

que imprime:

2018-11-08T10:25:18.223Z
2018-11-08T11:25:18.223+01:00[Europe/Paris]
2018-11-08T11:25:18.223

Supongo que te gusta

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