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

标签 java date java-8 zoneddatetime

我正在尝试使用 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/

相关文章:

nhibernate - 使用 nHibernate 查询今天的日期在发布日期和到期日期之间

date - 以下日期格式的解释 2012-08-08T15 :04:33+0200

java - 重构方法引用以支持参数

Java 8 - 如何将 Pojo 转换为其嵌入的 Pojo 属性列表

java - 如何在 JDK8 上使用 SPDY 运行 Jetty?

java - 如何使边框适合 LinearLayout

javascript - 如何在两个日期输入中具有相同的年份?

java - 如何从Java中的ArrayList中删除特定的bean对象?

java - 让 JSoup 报告 HTML 无效的原因

Java Spark groupByKey 与 key1 并在 groupedRDD 上使用 key2 执行aggregateByKey