当前位置:  开发笔记 > 编程语言 > 正文

如何使用ZonedDateTime或Java 8将任何日期时间转换为UTC

如何解决《如何使用ZonedDateTime或Java8将任何日期时间转换为UTC》经验,为你挑选了1个好方法。

我正在尝试将日期06-12-2015 02:10:10 PM从默认区域转换为UTC ZonedDateTime.

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?这里给出的答案将当前时间转换为UTC.



1> Elliott Fris..:

您可以使用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


如果我这样做`Date date1 = Date.from(zdt.toInstant())`它返回原始时间`06-12-2015 02:10:10 PM`为什么?
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有