[英]How do I calculate the number of days, minus Sundays, between two dates in C#?
[英]C# Number of days between two dates problem
我的下面的代碼有一個小問題,無論天數相隔多遠,“ days”變量似乎總是為0。
您能看到明顯不對的地方嗎?
System.TimeSpan span = dates[0] - dates[1]; // e.g. 12/04/2010 11:44:08 and 18/05/2010 11:52:19
int days = (int)span.TotalDays;
if (days > 10) //days always seems to be 0
{
throw new Exception("Over 10 days");
}
謝謝
當您從較早的日期中減去較晚的日期時,根據您的評論,TotalDays將為負數。 在您的示例中,為-36。
因此, (days > 10)
的比較將失敗。 你應該用
int days = Math.Abs((int)span.TotalDays);
假設您未將date [0]設置為等於date [1],則沒有理由為注釋中的示例日期TotalDays返回零。
總天數應為負數,但無論如何不能為零,因為您要從較晚的日期中減去較早的日期。 看來dates[0]
和dates[1]
不包含您的想法。
我剛剛測試了這個:
DateTime date1 = new DateTime(2010, 12, 31);
DateTime date2 = new DateTime(2010, 1, 1);
TimeSpan timeSpan = date2 - date1;
Console.WriteLine(timeSpan.TotalDays);
該程序產生輸出: -364
。 所以它應該完美地工作! 一個問題:您是否將DateTime[]
用於dates
數組?
順便說一句: days > 10
不會檢查days
是否為零。
如果我們假設您的代碼看起來完全像這樣,並且正確地填充了dates數組,那么這里沒有什么錯誤會導致天數完全為零。 也許檢查一下您的日期數組中是否有正確的值? 除此以外,發布更多代碼?
要么這樣做:
System.TimeSpan span = dates[0] - dates[1];
int days = Math.Abs((int)span.TotalDays);
if (days > 10)
{
throw new Exception("Over 10 days");
}
或這個:
System.TimeSpan span = dates[1] - dates[0];
int days = (int)span.TotalDays;
if (days > 10)
{
throw new Exception("Over 10 days");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.