运算符'> ='无法应用于'System.DateTime?'类型的操作数和'int'

时间:2014-05-22 14:39:12

标签: c# compiler-errors

我的代码是这样的,但我需要验证RemainingDay是否超过10,然后它不会显示剩余天数的消息框

if (Convert.ToDateTime(dr[0]) == DateTime.Today)
{
    MessageBox.Show("Your trail period is expired. Please purchase this Software.", "SMS");
    Application.Exit();
}
else
{
    newDate = Convert.ToDateTime(dr[0]);
    RemainingDay = newDate.Subtract(TodayDate);

    MessageBox.Show("You have " + RemainingDay.Days + " days Left.", "SMS");
    this.Hide();

    frmMainMenu frm = new frmMainMenu();
    frm.Show();
    frm.lblUser.Text = txtUserName.Text;
}

我尝试了以下代码:

if (Convert.ToDateTime(dr[0]) == DateTime.Today)
{
    MessageBox.Show("Your trail period is expired. Please purchase this Software.", "SMS");
    Application.Exit();
}
else
{
    newDate = Convert.ToDateTime(dr[0]);
    RemainingDay = newDate.Subtract(TodayDate);

    if (RemainingDay <= 10)
    {
        MessageBox.Show("You have " + RemainingDay.Days + " days Left.", "SMS");
        this.Hide();
    }
    else
    {
        this.Hide();
        frmMainMenu frm = new frmMainMenu();
        frm.Show();
        frm.lblUser.Text = txtUserName.Text;
    }                        
}

上面的代码给了我这个错误:

  

运营商&#39;&gt; =&#39;不能应用于类型&#39; System.DateTime?&#39;的操作数?和&#39; int&#39;

请帮帮我。

2 个答案:

答案 0 :(得分:4)

您的RemainingDay变量是TimeSpan,这是给定的DateTime和今天的日期之间的差异。你无法看到TimeSpan是否小于一个数字 - 它没有任何意义。

您想要的是获取日期之间的天数差异,TimeSpan.Days属性中保留的天数(来自MSDN)

  

当前TimeSpan结构所代表的时间间隔的days组件。

所以请改用它。

答案 1 :(得分:3)

更改

if (RemainingDay <= 10)

if (RemainingDay.Days <= 10)