1

我正在尝试使用 Joda Time 找出 2 次之间的差异。我尝试使用此处的一些示例,但无法返回值。这是我尝试过的:时间的格式为 17:23,往返变量是时区,如 America/Los_Angeles 或 Europe/London

    DateTime dtFrom = DateTime.now()
    DateTime dtTo = new DateTime(dtFrom.withZone(DateTimeZone.forID(to)));
    //calculate time difference
    Period period = new Period(dtTo, dtFrom) ;
    Minutes minutes = Minutes.minutesBetween(dtFrom, dtTo);
    long diffInMillis = dtFrom.getMillis() - dtTo.getMillis();

我尝试使用不同的方法来比较这两者,但始终没有返回任何值...期间返回 PT0S,分钟返回 PT0M,diffInMillis 返回 0。我在这里做错了什么?谢谢!

4

1 回答 1

2

您正在使用withZone()方法,该方法定义为自 1970-01-01T00:00Z 以来以毫秒为单位保留 (POSIX) 瞬间。因此dtFromdtTo尽管它们的本地时间表示由于不同的时区而不同,但它们描述相同的全球时间仍然具有相同的即时含义。

结果:无论您使用哪个时间单位,两个相同时刻之间的差异都完全等于零。

但是,如果您对本地时差感兴趣,请确定区域偏移差异,例如使用方法getOffset()

于 2016-10-09T09:31:37.910 回答