2010-12-15 199 views
4

我有一個查詢從C#調用Oracle數據庫。我想編寫查詢來獲取最多5年的數據。日期範圍天數.... C#

我現在有public const int FIVE_YEARS_IN_DAYS = 1825;

一個硬編碼值,但是,這是因爲閏年的不正確。有沒有一個函數可以給我前5年的正確天數?

+0

爲什麼不每年使用365.25天? – PostMan 2010-12-15 19:59:26

+1

@PostMan - 這並不總是準確的。我們每4年沒有閏年。處理時間是編程中的一個領域,它使用經過硬化和測試的解決方案要好得多。被咬傷很容易。 – 2010-12-15 20:05:23

+0

@所有....感謝您的輸入。非常有幫助 – MikeTWebb 2010-12-15 20:47:15

回答

6

我想你想要這樣的:

DateTime now = DateTime.Now;  
now.AddYears(-5).Subtract(now).Days 
+3

爲了捕捉在午夜左右執行此計算的可能性不大的事件,您可以考慮首先捕獲DateTime.Now,然後使用捕獲的值執行計算。 – wageoghe 2010-12-15 20:06:22

+0

我希望只是把@Matt Greer放在正確的道路上,但是很好。 – 2010-12-15 20:25:41

+3

我會認爲'DateTime.Today'會比'DateTime.Now'更好的選擇。 – Powerlord 2010-12-15 20:37:20

4
DateTime now = DateTime.Now; 
TimeSpan fiveYears = now.Subtract(now.AddYears(-5)); 
int numberOfDaysInLastFiveYears = fiveYears.Days; 

這將正確地解釋閏年。現在這樣做產生1,826天。

+0

與我對@Bakak Naffas的回答相同的評論。可能更安全地捕獲DateTime.Now並使用捕獲的值執行計算。 – wageoghe 2010-12-15 20:10:47

+0

是的,這是正確的。通常捕獲'DateTime.Now'是一種很好的做法。 – 2010-12-15 20:12:08