我正在尝试使用 ZonedDateTime
将日期 06-12-2015 02:10:10 PM
从默认时区转换为 UTC。
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime utc = ZonedDateTime.of(localDateTime, ZoneOffset.UTC);
但是 utc
返回 2015-12-06T14:10:10Z
而不是 06-12-2015 09:10:10 AM
如何将日期从默认时区转换为 UTC?给出的答案here将当前时间转换为 UTC。
最佳答案
您可以使用 ZonedDateTime.ofInstant(Instant, ZoneId)
其中第二个参数是 UTC
(即时知道本地偏移量)。类似的东西,
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();
}
然后我得到(对应于我的本地区域偏移量)
06-12-2015 06:10:10 PM
关于java - 如何使用 ZonedDateTime 或 Java 8 将任何日期时间转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115801/