繁体   English   中英

如何在没有 GMT 的情况下使用 java.time.ZonedDateTime 和 format.DateTimeFormatter?

[英]How to use java.time.ZonedDateTime & format.DateTimeFormatter without GMT?

执行以下操作:

val zonedFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm z")

ZonedDateTime.from(zonedFormatter.parse("31.07.2020 14:15 GMT"))

给我:

"displayDate": "2020-07-31T14:15:00Z[GMT]"

我想要没有 [GMT]:

"displayDate": "2020-07-31T14:15:00Z"

您可以使用DateTimeFormatter.ISO_OFFSET_DATE_TIME来格式化解析的ZonedDateTime 但是,如果您希望日期时间始终为 UTC,我建议您将解析后的ZonedDateTime转换为Instant

演示:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("dd.MM.uuuu HH:mm z", Locale.ENGLISH);

        ZonedDateTime zdt = ZonedDateTime.from(dtfInput.parse("31.07.2020 14:15 GMT"));
        System.out.println(zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

        System.out.println(zdt.toInstant());
    }
}

输出:

2020-07-31T14:15:00Z
2020-07-31T14:15:00Z

在线演示

Trail: Date Time 中了解有关现代日期时间 API * 的更多信息。 检查此答案此答案以了解如何将java.time API 与 JDBC 结合使用。


* 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 通过 desugaring 可用的 Java 8+ API 请注意,Android 8.0 Oreo 已提供java.time支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM