【问题标题】:Joda-Time duration in exact decimal daysJoda-Time 持续时间以精确的十进制天数表示
【发布时间】:2015-10-18 12:29:02
【问题描述】:

我正在尝试使用 Joda-Time 的持续时间类来计算两天之间不同的确切天数。这意味着我希望结果是 25.48 天而不是 25 天。现在我有:

private static final double MILLISECONDS_IN_DAY = 86400000;

DateTime today = new DateTime();
Duration dur = new Duration(foo.getExpirationDate(), today);
double diff_days = dur.getMillis()/MILLISECONDS_IN_DAY;

但我想知道是否有一种方法可以将第一行和最后一行合并为一个,从而使我获得双倍。

【问题讨论】:

    标签: java date datetime jodatime


    【解决方案1】:

    您可以通过使用 Joda-Time 的常量而不是声明自己的常量来消除第一行。

    org.joda.time.DateTimeConstants.MILLIS_PER_DAY
    

    不要忘记,如果您尝试计算另一个日期,可能会有更好的方法来执行此操作。 Joda-Time 很好地解决了闰年等日历的不规则性。

    【讨论】:

    • 这个常数很有帮助,谢谢。你知道更好的方法吗?
    • DateTime 对象的 plus 和 minus 方法是通过添加或减去持续时间或周期来从一个 DateTime 到另一个 DateTime 的最佳方法。 DateTime.plus(ReadablePeriod period) 如果您只想计算两次之间的天数,那么您拥有的上述代码对于任何包含正常长度天数的 Duration 都是准确的。如果您想要完美的准确性,您应该使用 Period 并将期间的每个元素转换为天,然后将它们相加。
    猜你喜欢
    • 2011-06-26
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多