JodaTime可能出现错误结果

时间:2017-02-04 14:42:53

标签: java jodatime android-jodatime

我正在使用JodaTime for Android(link),我正在尝试计算两个日期之间的Period

一个日期来自服务器Europe/London时区,另一个日期是我创建的日期:

DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(TimeZone.getTimeZone("Europe/London"));
DateTime now = DateTime.now(dateTimeZone);

我想要的是获取现在之间的Period以及我从服务器获得的日期。

我正在创建一个新的Period实例,如下所示:

Period period = new Period(serverDateTime, now, PeriodType.yearMonthDayTime());

但我每次得到的结果都有2小时的偏差。

如果我打印serverDateTime:2017-02-04T14:30:00.000+02:00now2017-02-04T14:30:13.862Z

对于这些值,我得到period.getHours() == 2

我应该改变什么?两次看起来都是正确的,但某处出现了错误

1 个答案:

答案 0 :(得分:0)

所以我从服务器(我得到一个字符串)创建时间,如:

DateTime serverDateTime = new DateTime(Integer.valueOf(year), Integer.valueOf(month),
            Integer.valueOf(day), Integer.valueOf(hours), Integer.valueOf(minutes));

我所要做的就是添加timezone,所以答案是:

DateTime serverDateTime = new DateTime(Integer.valueOf(year), Integer.valueOf(month),
            Integer.valueOf(day), Integer.valueOf(hours), Integer.valueOf(minutes), dateTimeZone);