2016-07-09 120 views
1

我需要使用NodaTime計算兩個日期之間的天數,並在一個時區內完成。如何獲得nodatime中兩個日期之間的天數

結束時間是基於日期的午夜暗示時間。這個日期是在一個時區。

開始時間是當前時間,但我將它傳遞給函數,以便函數可測試。

我嘗試使用Period,這看起來像是明顯的答案,但Period在一端(當我們在結束的那天)太細,而且在我們距離超過1個月時不夠精細。

所以如果現在是7月9日下午5:45在美國/多倫多,結束時間是9月1日00:00:00,那麼我希望能夠計算54天。 (假設我正確計算了日曆上的天數:))

我想我必須自己處理子日問題,但是當我必須弄清楚如何處理大於月問題。

有沒有一種顯而易見的方法來獲得NodaTime兩次之間的天數?我使用.Net的DateTime和TimezoneInfo類將其分爲三行代碼,但我想轉到NodaTime,因爲網站上指定的所有原因。

謝謝

回答

3

我應該在發佈前仔細閱讀文檔的算術部分。

您可以指定希望數學結果與第三個參數一起使用的單位。這是我所需要的:

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

這是從文檔: http://nodatime.org/unstable/userguide/arithmetic.html

希望這有助於有人在未來的人。

+0

有一點需要注意的是,如果您要求天數並且剩餘1天,您將得到一個全零的時間段。其他值,如小時數不會被填入。 –

+0

如果後面的部分對您來說是個問題,您總是可以要求一段時間單位+天。 –

+0

啊我可以或PeriodUnits。這就說得通了。謝謝。 –

相關問題