【问题标题】:Possible wrong result from JodaTimeJodaTime 可能的错误结果
【发布时间】:2017-06-21 20:26:32
【问题描述】:

我在 Android 上使用 JodaTime (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

我应该改变什么?两次似乎都是正确的,但在某处有错误

【问题讨论】:

    标签: java jodatime android-jodatime


    【解决方案1】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 2017-06-15
      • 2012-11-25
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2015-12-27
      相关资源
      最近更新 更多