【问题标题】:How to get number of days between two dates in nodatime如何在nodatime中获取两个日期之间的天数
【发布时间】:2016-07-09 21:47:31
【问题描述】:

我需要使用 NodaTime 计算两个日期之间的天数,并在时区中进行。

结束时间是基于在一天结束时隐含的午夜时间的日期。此日期属于时区。

开始时间是当前时间,但我将它传递给函数,以便函数可测试。

我尝试使用 Period,这似乎是显而易见的答案,但 Period 一方面过于细化(当我们在结束日时),而当我们距离超过 1 个月时,又不够细化。

因此,如果现在是美国/多伦多的 7 月 9 日下午 5:45,结束时间是 9 月 1 日 00:00:00,那么我希望能够计算 54 天。 (假设我正确计算了日历上的天数。:))

我想我必须自己处理次日问题,但当我必须弄清楚如何处理超过一个月的问题时,我感到很惊讶。

有没有一种明显的方法可以从 NodaTime 获取两次之间的天数?我使用 .Net 的 DateTime 和 TimezoneInfo 类将其缩减为三行代码,但出于网站上指定的所有原因,我想移至 NodaTime。

谢谢

【问题讨论】:

    标签: nodatime


    【解决方案1】:

    在发布之前,我应该更仔细地阅读文档的算术部分。

    您可以使用第三个参数指定您希望数学结果使用的单位。这是我需要的:

    Period timeLeft = Period.Between(nowInTz.LocalDateTime, endDate, PeriodUnits.Days);
    

    这是来自文档: http://nodatime.org/unstable/userguide/arithmetic.html

    希望这对将来的其他人有所帮助。

    【讨论】:

    • 要注意的一点是,如果您要求天数并且还剩下 1 天,您将得到一个全为零的句点。不会填写其他值,例如小时数。
    • 如果后半部分对您来说是个问题,您总是可以要求一个时间单位 + 天的时间段。
    • 嗯,我可以或 PeriodUnits。那讲得通。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多