【问题标题】:mvc 2 start date and end date validationmvc 2 开始日期和结束日期验证
【发布时间】:2012-05-25 07:35:01
【问题描述】:

大家好,我正在尝试比较两个日期,由于某种原因,如果我指定 25/05/2012(开始日期)和 31/05/12(结束日期),以下代码将返回 false。

只有在使用 25 日作为开始日期时才会发生这种情况,如果我使用 26 日则可以正常工作。

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

可能出了什么问题?

【问题讨论】:

  • 对于您指定的输入,该代码不会返回 false。请出示您的真实代码,包括调用该方法的代码。

标签: c# datetime asp.net-mvc-2


【解决方案1】:

你一定是弄错了什么。对于您指定的给定输入,此代码返回 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;
}

【讨论】:

  • 啊!我将日期指定为 DateTime startDate = new DateTime(2012-05-25);而不是使用昏迷。
  • @RajuKumar - 通过使用破折号,编译器实际上将它们解释为减法运算符,并从 2012 年开始分轨 5 和 25,然后将 rsult 传递给 DateTime 的单个 int 构造函数参数,该参数采用数字蜱虫。这将最终成为一个非常古老的日期。当然,2012 年 - 5 - 25 大于 2012 年 - 5 - 30,即使在日期数学中它会更大。
【解决方案2】:

为什么要创建一个函数来检查startDate &lt; 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; 
}

这段代码返回真!!!

分解它并检查你是否有你想要的值

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

//哎呀,我没有意识到它已经被回答了

【讨论】:

  • startDate &lt; endDateendDate &gt; startDate 是同一个语句,此时您只是添加了额外的代码。
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 2017-10-02
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多