如果声明要检查日期

时间:2015-10-08 09:51:47

标签: c#

我有一个' IF'声明,但我希望条件检查我的对象的日期不低于今天的日期,但我根本无法弄清楚如何做到这一点。

代码

private List<Web.Services.Entities.Generic.Expenditure> getTransactions(int Id, int AccountId, string Identifier)
{    
if (Details != null)
    {
    foreach (var ABC in Details.Info.ABC)
    {
        if (ABC.Type == "Test" && ABC.Value.Value > 0)
        {
            int j = 1;

            if (ABC.Frequency == "Monthly")
            {
                j = 3;
            }
            for (var i = 0; i < j; i++)
            {
                List.Add(new Web.Services.Entities.Generic.Expenditure
                {
                    Amount = ABC.RegularIncome.Value * -1,
                    Description = "Income (" + ABC.Frequency + ")",
                    DueDate = (DateTime)ABC.NextDate.Value.AddMonths(i)
                });
            }
        }
    }
}
}

我尝试将(DateTime)ABC.NextDate.Value声明为VAR,高于以下IF,然后添加到if (ABC.Type == "ABC" && ABC.Value.Value > 0),但我收到以下错误:

  

运营商&amp;&amp;&amp; &#39;不能应用于&#39; bool&#39;类型的操作数和   &#39; System.DateTime的&#39;

我需要为上述IF添加另一个条件,而不是替换&#39; 0&#39;因为这是在返回的内容中检查另一个值。

2 个答案:

答案 0 :(得分:3)

使用DateTime.NowABC.Value.Value与当前日期进行比较。

  if (ABC.Type == "Test" && ABC.Value.Value > DateTime.Now)
问题更新后

编辑,其中包含更多必需的详细信息和更新的if语句。

  

System.Nullable'不包含'Date'和no的定义   延期方法'日期'接受......

您需要使用DateTime.Value来访问可为空的DateTime的Date属性。在使用Date属性之前,必须检查DateTime变量是否具有值。您可以使用.HasValue确保您具有可为空的DateTime值。

一旦您确定您的datetime变量具有使用.HasValue的值,您就可以安全地使用DateProperty,这样您就可以使用ABC.NextDate.Value代替ABC.NextDate来访问Date Property。

if (ABC.Type == "Test" && ABC.Value.Value > 0 && ABC.NextDate.HasValue && ABC.NextDate.Value.Date >= DateTime.Now.Date)

答案 1 :(得分:1)

要测试可以为空的日期,请执行以下操作:

if (dateTimeToBeTested.Value.Date >= DateTime.Now.Date)

通过使用.Date属性,您迫使DateTime到相关日期的午夜,因此时间差异将被忽略。

要在上面的示例中使用此功能,您可以执行以下操作:

if (ABC.Type == "Test" && ABC.Value.Value > 0 && dateTimeToBeTested.Value.Date >= DateTime.Now.Date)