新的Joda DateTime对象,怪异的TimeZone(-0752)

时间:2014-07-04 02:37:53

标签: datetime timezone jodatime

我正在使用Joda Time库打印出时间戳,而且大多数情况下,它正在运行。但是当我创建一个像这样的新DateTime对象时:

// leftThumbIndex corresponds to a RangeBar position
DateTime startDateTime = new DateTime(1000, 1, 1, leftThumbIndex, 0, 0, 0);

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Log.e("start", formatter.print(startDateTime));

我打印出结果,这就是我得到的:

1000-01-01T23:00:00.000-0752

所以它给了我一个奇怪的TimeZone。我认为时区的增量为100 ...即-0800,-0500等

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

问题来自你正在使用的中世纪日期。

默认情况下,Joda-Time使用ISO年表,这对1583年之前的历史日期不准确。如果您不需要使用历史日期,则默认的ISO年表应该没问题。

如果您确实希望使用历史日期,您可以查看Julian年表,或者更好的是Gregorian-Julian年表。

此外,在时区之间不一定有1小时的增量。 there出现了30分钟和45分钟的差异时区。