【问题标题】:DateTime within interval in JodaTime?日期时间在 JodaTime 的区间内?
【发布时间】:2010-10-28 03:28:32
【问题描述】:

JodaTime 中是否有 API 方法可以查看 DateTime 是否在 [start, end] 内,即是否​​包含边界?

我唯一发现的是 new Interval(start, end).contains(dateTime) 但如果 dateTime 等于 end,这似乎是错误的。

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

    如果您需要经常这样做,最简单的方法是创建一个新间隔,将旧间隔延长一毫秒:

    Interval inclusiveInterval = interval.withEndMillis(interval.getEndMillis() + 1);
    

    或者只是使用

    if (interval.contains(dateTime) || interval.getEnd().isEqual(dateTime))
    

    isEqual 方法忽略了年表和时区。)

    【讨论】:

    • 是的,在你回答之前我最终使用了后者。无论如何,谢谢,我没有注意到 isEquals 的行为是这样的。
    • 顺便说一句:当包含日期时间等于结束日期时间时,包含方法不将日期时间计为包含在间隔中是否有逻辑原因?我觉得这很奇怪。
    • @BloodySmartie:计算机科学和数学中的区间通常以“包含下限,上限不包含”的方式给出 - 一方面,这意味着如果您有区间 [a, b), [b, c), [c, d) 等自然地为您提供相邻的间隔。
    • 为什么不使用interval.contains(...)
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 2017-09-25
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多