【问题标题】:Cannot get the correct difference between two time stamps using Joda time无法使用 Joda 时间获得两个时间戳之间的正确差异
【发布时间】:2019-09-12 15:21:40
【问题描述】:

我正在使用 Joda time android,当我尝试获取两个时间戳之间的差异时,该值从 0 增加到 59,并且永远不会超过该值。

我正在使用https://github.com/dlew/joda-time-android

任何指针将不胜感激。

这就是我所拥有的

DateTime currentTime = new DateTime();
                Period difference = new Period(calculator.getLastTotalizerChangeTime(meterMeasurement.getFlowMeterId()), currentTime);
                Log.d("totaliserSenseCheck", "fcalculator.getLastTotalizerChangeTime() - " + calculator.getLastTotalizerChangeTime(meterMeasurement.getFlowMeterId())
                        + " currentTime - " + currentTime
                        + " difference - " + difference.getSeconds());

日志 fcalculator.getLastTotalizerChangeTime() 未更改,仅更改当前时间,但差异永远不会超过 59 并重置为 0

D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:03:42.730+01:00 difference - 2
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:03:47.335+01:00 difference - 7
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:03:51.113+01:00 difference - 11
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:04:00.793+01:00 difference - 20
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:04:40.369+01:00 difference - 0
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:04:51.574+01:00 difference - 11
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:05:08.914+01:00 difference - 28
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:05:36.840+01:00 difference - 56
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:05:39.070+01:00 difference - 59
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:05:44.526+01:00 difference - 4
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:09:09.579+01:00 difference - 29
D/totaliserSenseCheck: fcalculator.getLastTotalizerChangeTime() - 2019-09-12T16:03:40.002+01:00 currentTime - 2019-09-12T16:09:43.226+01:00 difference - 3

【问题讨论】:

    标签: java android datetime jodatime android-jodatime


    【解决方案1】:

    getSeconds() 方法不返回 total 秒,它返回秒作为一个单独的字段,其中一个时间段已被分解为小时、分钟、秒等多个字段。所以如果时差是 10 小时 11 分 40 秒,getSeconds() 只会给你 40 部分。

    之前没用过Joda时间,不过我觉得你要的方法是toStandardSeconds().getSeconds()

    【讨论】:

    • 嘿,谢谢你,使用 toStandardSeconds() 我可以看到它打印 PT43S、PT47S 43 和 47 是秒。我如何才能将其实际转换为 int 值?
    • @BRDroid .toStandardSeconds() 返回一个Seconds 类型的对象,它有一个.getSeconds() 方法来获取该对象所代表的整数秒数。
    • ifference.toStandardSeconds().getSeconds() 工作谢谢
    • 更新您的答案,包括 ifference.toStandardSeconds().getSeconds(),我会接受答案。
    • 没问题!感谢@Jordan 在我外出午餐时提供的额外信息。 :)
    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多