【发布时间】:2018-12-25 00:16:21
【问题描述】:
我必须以这种格式输入日期时间:
"2018-07-17T12:16:50.52Z"
因此我正在使用:
private static final SimpleDateFormat LIVETRACK_DATE_TIME_FORMATTER =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
DATE_TIME_FORMATTER.parse(timeFrameFrom);
但是当我运行测试用例时出现以下错误:
Tue Jul 17 1[2:20:50 CES]T 2018> but was:<Tue Jul 17 1[0:20:50 GM]T 2018>
这是否意味着我应该将日期转换为 GMT 格式? 如何转换?
【问题讨论】:
-
我建议你避免使用
SimpleDateFormat类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。也不要将Z硬编码为格式模式字符串中的文字。这是一个 UTC 偏移量,需要这样解析,否则会得到不正确的结果。 -
您的代码不会生成单元测试报告为观察结果的
Tue Jul 17 10:20:50 GMT 2018 Uhr,至少不会产生“Uhr”。请问create a Minimal, Complete, and Verifiable example可以吗?然后我们可以更好地帮助您。 -
你的例子中的方括号是什么?错字?
-
@BasilBourque 在比较预期字符串和实际字符串时,JUnit(可能还有其他测试框架?)在不同的部分周围插入方括号。所以显然测试比较了字符串,但
DATE_TIME_FORMATTER.parse没有产生字符串,所以我们还没有被告知。
标签: java date datetime timezone gmt