使用 joda-time-2.0 版本库,我想知道,从 ISO 日期(假设 XML xs:dateTime
格式)构造哪个函数更好:new DateTime(String)
与 DateTime.parse(String)
.
因为两者都从相同的值返回不同的结果。示例:
new DateTime("2012-08-16T07:22:05Z")
DateTime.parse("2012-08-16T07:22:05Z")
由于 ISOChronology 而导致不同。第一个是 ISOChronology[Europe/Paris]
,第二个是 ISOChronology[UTC]
,虽然毫秒是一样的。
此外,here建议使用 ISODateTimeFormat.dateTimeNoMillis()
, 给出与使用第一个版本 (new
) 相同的结果。
最佳答案
这两个方法使用了两种不同的转换方式:构造函数使用InstantConverter的实例,如果是字符串,则为 StringConverter并且尚不支持从传递的字符串中读取时区,而 parse
方法使用 DateTimeFormatter它知道如何解析时区。
虽然理论上这两种格式都接受 ISO 日期时间格式,但我认为构造函数有问题,因为它总是使用系统时区而不是字符串中指定的时区。这与此构造函数接受的其他可能值不一致,这些值确实考虑了具有时区偏移量的年表。例如,此构造函数将返回具有 UTC 时区的 DateTime
对象:
new DateTime(DateTime.parse("2012-08-16T07:22:05Z"))
关于java - Joda Time : new DateTime(String) vs DateTime. 解析(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197346/