DateTimeFormatter格式化失败

时间:2015-05-19 18:05:20

标签: java-8

我正在编写一个测试来测试许可证密钥的有效性..同时,更新代码以使用java 8 java.time包。

所以..创建'有效直到'日期时间并将其格式化为字符串:

LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
LocalDateTime nowPlus1Hour = now.plusHours(1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
formatter = formatter.withZone(Clock.systemUTC().getZone());
String validUntilString = nowPlus1Hour.format(formatter);

这个......大多有效。 (我的上一个版本引发了一个例外,因为我没有创建一个'withZone'的格式化程序。)

但是,'validUntilString'的值是'2015-05-19 19:46:26 Z'真的。 'Z'。拜托!

那么..给定一个LocalDateTime,你如何得到一个包含(是的,暧昧的,但在本例中是UTC,一个标准)时区id的字符串?

1 个答案:

答案 0 :(得分:1)

如评论中所述,时区已包含在您的字符串中:

"2015-05-19 19:46:26 Z"

此字母Z来自military - NATO convention

  

这个的基础是Z - 祖鲁时间 - 零子午线时间 - 与UTC相同这是一个为时区指定字母的惯例,其中Z =零子午线,祖鲁语是代表字母Z的字,当它是用于交流。它有时在美国军事和北约使用,与24小时制时钟一起使用,也很受欢迎,可用于电影参考时间。

     

其他字母/单词用于UTC以外的其他时区.....

阅读cited reference了解详情。