2012-05-25 101 views
1

嗨,大家好,我想比较两个日期,由于某些原因,下面的代码将返回false,如果我指定25/05/2012(startdate)和31/05/12(结束日期)。mvc 2开始日期和结束日期验证

这只会发生,如果25日作为开始日期,工作正常,如果我使用26日。

public bool IsValidDate(DateTime startDate, DateTime endDate) 
    { 
     return startDate < endDate && endDate > startDate; 
    } 

什么可能是错的?

+3

回答代码不会为你指定的输入返回false。请显示您的真实代码,包括调用此方法的代码。 –

回答

2

你必须弄错一些东西。对于给定的输入您指定的代码返回true

class Program 
{ 
    static void Main() 
    { 
     var startDate = new DateTime(2012, 5, 25); 
     var endDate = new DateTime(2012, 5, 31); 
     Console.WriteLine(IsValidDate(startDate, endDate)); 
    } 

    public static bool IsValidDate(DateTime startDate, DateTime endDate) 
    { 
     return startDate < endDate && endDate > startDate; 
    } 
} 

打印true在控制台上。

现在当然重复两次完全相同的条件是没有意义的。说明病情一度是绰绰有余:

public bool IsValidDate(DateTime startDate, DateTime endDate) 
{ 
    return startDate < endDate; 
} 
+0

啊!我指定日期为DateTime startDate = new DateTime(2012-05-25);而不是使用昏迷。 –

+0

@RajuKumar - 通过使用破折号,编译器实际上将它们解释为减法运算符,然后从2012年开始减去5和25,然后将rsult传递给DateTime的单个int构造函数参数,该参数需要多个Ticks。这最终会成为一个非常古老的约会。当然,2012减5减25大于2012减5减30,尽管在数学计算中它会更大。 –

0

为什么让一个函数来检查是否startDate < endDate

private void button1_Click(object sender, EventArgs e) 
{ 
    DateTime startDate = new DateTime(2012 , 05 , 25); 
    DateTime endDate = new DateTime(2012 , 05 , 31); 

    bool rtnval = IsValidDate(startDate, endDate); 

} 


public bool IsValidDate(DateTime startDate, DateTime endDate) 
{ 
    return startDate < endDate && endDate > startDate; 
} 

此代码返回true!

打破它,并检查你的价值观,你想

public bool IsValidDate(DateTime startDate, DateTime endDate) 
{ 
    bool resulta = startDate < endDate; // break here 
    bool resultb = endDate > startDate; // break here 
    return startDate < endDate && endDate > startDate; 
} 

//哎呀我没有意识到它已经被

+0

'startDate startDate'是相同的语句,您只是在该点添加额外的代码。 – Codeman

相关问题