J'essaie de convertir la date 06-12-2015 02:10:10 PM
de la zone par défaut à UTC en utilisant ZonedDateTime
.
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime utc = ZonedDateTime.of(localDateTime, ZoneOffset.UTC);
mais utc
renvoie 2015-12-06T14:10:10Z
au lieu de 06-12-2015 09:10:10 AM
Comment convertir la date de la zone par défaut en UTC? La réponse donnée ici convertit l'heure actuelle en UTC.
Vous pouvez utiliser ZonedDateTime.ofInstant(Instant, ZoneId)
où le deuxième paramètre est UTC
(l'instant connaît le décalage local). Quelque chose comme,
String source = "06-12-2015 02:10:10 PM";
String pattern = "MM-dd-yyyy hh:mm:ss a";
DateFormat sdf = new SimpleDateFormat(pattern);
try {
Date date = sdf.parse(source);
ZonedDateTime zdt = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC"));
System.out.println(zdt.format(DateTimeFormatter.ofPattern(pattern)));
} catch (ParseException e) {
e.printStackTrace();
}
Et je reçois (correspondant à mon décalage de zone locale)
06-12-2015 06:10:10 PM