8

使用 joda-time-2.0 版本库,我想知道,从 ISO 日期(假定的 XMLxs:dateTime格式)构造这些函数中的哪个更好:new DateTime(String)DateTime.parse(String).

因为两者都从相同的值返回不同的结果。例子:

new DateTime("2012-08-16T07:22:05Z")
DateTime.parse("2012-08-16T07:22:05Z")

由于 ISOChronology 导致不同。首先说 isISOChronology[Europe/Paris]和 second ISOChronology[UTC],尽管毫秒是相同的。

此外,这里推荐使用ISODateTimeFormat.dateTimeNoMillis(),给出与使用第一个版本( )相同的结果new

4

1 回答 1

14

这两种方法使用两种不同的转换方法:构造函数使用InstantConverter的实例,在字符串的情况下是StringConverter并且还不支持从传递的字符串中读取时区,而该parse方法使用DateTimeFormatter知道如何解析时区。

虽然理论上这两种格式都接受 ISO 日期时间格式,但我认为构造函数有问题,因为它总是使用系统时区而不是字符串中指定的时区。这与此构造函数接受的其他可能值不一致,后者确实考虑了带有时区偏移的年表。例如,此构造函数将返回一个DateTime具有 UTC 时区的对象:

new DateTime(DateTime.parse("2012-08-16T07:22:05Z"))
于 2012-08-30T19:01:19.463 回答