有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获得ZoneDateTime时区的三个字母首字母缩写?

我正在尝试为我的ZonedDateTime的格式化程序获取EDT的格式

根据fomatter规范,这应该是使用z选项,但这似乎不起作用,而是生成GMT+4的输出

我在Ubuntu上,我不确定这是否是特定于平台的

这是我的代码:

/**
     * The date time formatter for snapshot dates.
     */
    public static final DateTimeFormatter SNAPSHOT_FORMAT = new DateTimeFormatterBuilder().appendPattern("dd-MM-yyyy_HH:mm:ssz")
            .toFormatter();

&;生产什么:

14-08-2019_18:45:52GMT-04:00

如何将GMT-4转换为EDT

Page

编辑0:我从哪里获得ZonedDateTime

ZonedDateTime.now();

共 (1) 个答案

  1. # 1 楼答案

    不能,因为ZonedDateTime中的ZoneId没有这些信息

    展示

    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd-MM-yyyy_HH:mm:ssz");
    
    ZonedDateTime zdtEastern = ZonedDateTime.now(ZoneId.of("America/New_York"));
    ZonedDateTime zdtMinus4 = ZonedDateTime.now(ZoneId.of("GMT-04:00"));
    
    System.out.println(zdtEastern.format(fmt)); // Prints: 14-08-2019_19:40:36EDT
    System.out.println(zdtMinus4.format(fmt));  // Prints: 14-08-2019_19:40:36GMT-04:00
    

    您需要修复ZonedDateTimeZoneId值。由于我们不知道你从哪里/如何获得价值,我们无法帮助你

    无关:请注意,如果只使用一个模式,就不需要使用DateTimeFormatterBuilder