2011-06-28 134 views
0

我的代碼有點問題。情況如下:C#日期時間檢查不正確

有一個ListView包含一些測量數據。其中一個數據項是狀態。該狀態可以是10,20或30.這取決於下一個測量日期的值。

我所做的是這樣的。我採取下一個測量日期,並檢查當前數據+ 3個月是否高於下一個測量日期。如果是這樣,我返回狀態30。 如果當前日期> =下一個測量日期,我應該返回20. 否則我返回10.

因此,簡而言之: 當前日期+3個月>下一個測量日期=狀態30; 當前日期> =下一次測量日期=狀態20; else =狀態10;

問題是,當下一個測量日期高於下一個測量日期時,總是返回狀態30。下面是我的代碼:

private string getMsaStatus(DateTime dtNextMsa) 
    { 
     if (DateTime.Now.AddMonths(3) > dtNextMsa) 
     { 
      return "30"; 
     } 
     else if (DateTime.Now >= dtNextMsa) 
     { 
      return "20"; 
     } 
     else 
     { 
      return "10"; 
     } 
    } 
+0

只是恢復您使用的訂單,如果和提高您的接受率 –

回答

6

你需要改變這樣的:

if (DateTime.Now >= dtNextMsa.AddMonths(3)) 
{ 
    return "30"; 
} 
else if (DateTime.Now >= dtNextMsa) 
{ 
    return "20"; 
} 
else 
{ 
    return "10"; 
} 

該代碼考慮到了您的評論澄清。

+0

謝謝丹尼爾。我應用了你的代碼,但是我遇到了同樣的問題。唯一的區別是現在返回的狀態是ether 10或20. – Bernhard

+0

不應該是這種情況。也許你的測試數據是假的?示例:如果'dtNextMsa'將具有明天的值,則代碼將返回30. –

+0

也許你是對的。但是,我怎樣才能做這個檢查呢?值必須如下所示: 當今天超過dtNextMsa日期3個月或更多時,則必須返回30。 當dtNextMsa在今天和超過3個月之間時,則必須返回20。 在其他情況下,必須返回10。 – Bernhard