【发布时间】:2021-08-19 19:30:20
【问题描述】:
我必须调用一个需要日期字段的 Web 服务,但他们希望它采用以下格式 YYYY-MM-DDThh:mm:ss.sssZ。我该怎么做?
我尝试了以下
OffsetDateTime transactionTime = OffsetDateTime.now(ZoneOffset.UTC);
Date.from(transactionTime.toInstant());
但这没有用。 transactionTime 是 2021-06-01T15:11:09.942843400Z,但 Date.from 将其转换为 Tue Jun 01 11:11:09 EDT 2021。
顺便说一句,我使用的是 Java 11
【问题讨论】:
-
2021-06-01T15:11:09.942843400Z(祖鲁,格林威治时间)是 2021-06-01T11:11:09.942843400 EDT。在不同时区是同一时刻。
-
"Date.from 将其转换为 Tue Jun 01 11:11:09 EDT 2021" - 不,
Date.from将其转换为Date对象,它不是字符串。如果您需要以特定方式格式化Date对象,有多种方法(例如SimpleDateFormat)。 -
java.util.Date没有时区的概念。字符串Tue Jun 01 11:11:09 EDT 2021代表您所在时区的日期时间。由于Date没有时区信息,它应用JVM 的时区来返回Date#toString的值。 -
A
Date也不能有格式。 -
是什么让您认为您想要
Date?该类设计不佳且已过时,并且 Web 服务不直接使用Date对象,因此您不应该想要一个。最好坚持你的OffsetDateTime。