java中是否有任何内置方法可以为"+00:00"
UTC返回ZoneOffset
? getId()
方法仅返回"Z"
。
如果结果为"+00:00"
"Z"
public static String getSystemTimeOffset() {
String id = ZoneOffset.systemDefault().getRules().getOffset(Instant.now()).getId();
return "Z".equals(id) ? "+00:00" : id;
}
答案 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
文档的问题。您可以使用大量格式模式字母来格式化偏移:O
,X
,x
和Z
。对于每一种情况,我们在格式中添加了多少。大写X
将为您提供您不想要的Z
,因此我们可以跳过它。这些示例似乎表明我们可以在这里使用小写x
或大写Z
。对于x
:“三个字母输出小时和分钟,带冒号,例如' +01:30'。”Bingo。