【发布时间】:2015-11-16 18:39:26
【问题描述】:
我正在尝试以 2015-08-20T08:26:21.000Z
之类的格式创建字符串
到 2015-08-20T08:26:21Z
我知道它可以通过一些字符串拆分技术来完成,但我想知道是否有一个优雅的解决方案(只需最少的代码更改)。
以上两个都是时间字符串,我需要的最后一个是 ISO 8601 中的 Date 。 https://www.rfc-editor.org/rfc/rfc3339#section-5.6
我尝试了一些类似的问题,例如converting a date string into milliseconds in java,但它们实际上并没有解决目的。
也尝试过使用:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
String nowAsString = df.format(new Date());
但它仍然没有进行任何字符串到字符串的转换。收到以下错误:
23:04:13,829 WARN [RuntimeExceptionMapper] 捕获 RuntimeException:{}:java.lang.IllegalArgumentException:无法将给定对象格式化为日期
有人可以推荐一些图书馆吗?
谢谢。
【问题讨论】:
-
输入和输出都是字符串。但这些字符串实际上代表不同的时区。
-
A DateFormat 执行字符串到日期和日期到字符串的转换。您想要字符串到字符串的转换。因此,您可以使用 DateFormat 进行 String 到 Date 的转换,并使用另一个 DateFormat 进行 Date 到 String 的转换。不,它们不代表不同的时区。一个有毫秒部分,另一个没有。这是唯一的区别。最后的 Z 表示祖鲁时间,即 UTC 时区。
-
那么 org.joda.time.format.DateTimeFormatter ?
-
@CodeMonkey 所以你的目标是消除
.000?您的标题令人困惑,因为您第一句中的两个日期时间字符串都是有效的ISO 8601 字符串。