C#DateTimePicker比较问题

时间:2016-10-29 14:20:58

标签: c# winforms datetimepicker

我想使用C#比较winforms中的两个dateTimePickers。

我的比较代码如下;

if (dtpFromDate.Value > dtpToDate.Value)
{
   MessageBox.Show("From Date is greater than To Date");
   return;
}

以下是两个dateTimePickers的值

  

dtpFromDate.Value = 10/29/2016 5:10:27 PM

     

dtpToDate.Value = 10/29/2016 5:10:27 PM

但是如果将两个dateTimePickers设置为如上所述的初始值(即今天的日期),则if语句也为true,但我需要的是仅检查日期是否更大(FromDate> ToDate)。 我做错了吗?

3 个答案:

答案 0 :(得分:0)

要明确说明,dtpFromDate.Value的数据类型为DateTime。我总是喜欢使用DateTime.Tick属性进行DateTime比较,因为它是一个整数类型,所以比较对于读者来说是显而易见的,而且速度也很快。

我相信当创建两个不同的DateTimePicker控件时,它们的值相差不到一秒,从而导致问题。如果您的目的是简单地将DateTimesecond的最小数量进行比较,那么您可以执行此操作

if ((dtpFromDate.Value.Ticks / TimeSpan.TicksPerSecond) > 
     (dtpToDate.Value.Ticks / TimeSpan.TicksPerSecond))
{
   MessageBox.Show("From Date is greater than To Date");
   return;
}

DateTime对象的最小计数为Tick。您可以在MSDN上的DateTime.TicksTimeSpan上阅读

  

单个刻度表示一百纳秒或一千万分之一   一秒钟一毫秒内有10,000个刻度,或1000万个刻度   嘀嗒一声。

答案 1 :(得分:0)

如果您不关心时间,请执行以下操作:

if (dtpFromDate.Value.Date > dtpToDate.Value.Date)
{
   MessageBox.Show("From Date is greater than To Date");
   return;
}

答案 2 :(得分:0)

我在同一个窗体上有两个日期时间选择器。即使我对 dtpStartDate.Value.Date 和 dtpEndDate.Value.Date 进行了比较,但当两个日期时间选择器的值似乎相同时,对结束日期早于开始日期的检查仍然出错.直到我比较了像 dtpEndDate.Value.ToString("MM/dd/yyyy HH:mm:ss.fff")dtpStartDate.Value.ToString("MM/dd/yyyy HH:mm:ss.fff") 这样的毫秒值,我才看到差异。

就我而言,我只想比较月、日和年。为了进行适当的比较,我必须做的是使用

if (dtpStartDate.Value.Date.Date > dtpEndDate.Value.Date.Date)
        {
            // Start Date cannot be later than the End Date
        }