2011-06-28 94 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