如何使ZoneOffset UTC返回" +00:00"而不是" Z"

时间:2018-04-12 07:24:35

标签: java timezone-offset

java中是否有任何内置方法可以为"+00:00" UTC返回ZoneOffsetgetId()方法仅返回"Z"

如果结果为"+00:00"

,我目前的方法是手动将其更改为"Z"
public static String getSystemTimeOffset() {
    String id = ZoneOffset.systemDefault().getRules().getOffset(Instant.now()).getId();
    return "Z".equals(id) ? "+00:00" : id;
}

1 个答案:

答案 0 :(得分:3)

private static DateTimeFormatter offsetFormatter = DateTimeFormatter.ofPattern("xxx");

public static String getSystemTimeOffset() {
    ZoneOffset offset = ZoneId.systemDefault().getRules().getOffset(Instant.now());
    return offsetFormatter.format(offset);
}

事实证明,ZoneOffset可以像日期时间对象一样格式化(除了没有ZoneOffset.format方法,因此我们需要使用DateTimeFormatter.format方法并传递区域偏移)。所以这是阅读DateTimeFormatter文档的问题。您可以使用大量格式模式字母来格式化偏移:OXxZ。对于每一种情况,我们在格式中添加了多少。大写X将为您提供您不想要的Z,因此我们可以跳过它。这些示例似乎表明我们可以在这里使用小写x或大写Z。对于x:“三个字母输出小时和分钟,带冒号,例如' +01:30'。”Bingo。

链接:DateTimeFormatter documentation