0

我正在开发一个从服务器获取时间的 Android 应用程序,我想知道该时间何时过去。

我目前正在使用 Joda java 库尝试此操作,但没有成功。

我试过这个:

public void countTime(){

    DateTime now = DateTime.now();
    DateTime then = bus.getArrivalDateTime();

    int i = now.compareTo(then);
    Log.w(LOGTAG, "Difference " + i + " " + now.toString() + " "  + then.toString());
    if (i > 0) {
        Log.w(LOGTAG, "BEFORE");
    } else {
        Log.w(LOGTAG, "AFTER");
    }
}

但是 now.compareTo(then) 总是返回 1,即使时间已经过去了。如果经过 3 小时,compareTo 仍然显示 1 也没关系。

我也尝试过 isBefore 和 isBeforeNow 方法,但无法得到正确答案。日志显示了这一点:

Difference 1  2013-09-22T12:24:23.791+02:00   2013-01-22T12:11:48.000+01:00
4

1 回答 1

1

使用Period差异PeriodType.hours()

  DateTime da = new DateTime("2013-09-22T12:24:23.791+02:00");
  DateTime db = new DateTime("2013-01-22T12:11:48.000+01:00");

  Period difference = new Period(db, da, PeriodType.hours());

   int hour = difference.getHours();

输出: 5831

它也会照顾不同的TZ

将 Android 与joda-time-2.1

于 2013-09-22T10:33:43.697 回答