簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM