c#日期时间选择器比较问题

本文关键字:比较 问题 选择器 时间 日期 | 更新日期: 2023-09-27 18:15:39

我想用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语句也为真,但我需要的是检查日期是否更大(FromDate>ToDate)。我做错了什么吗?

c#日期时间选择器比较问题

如果你不在乎时间,那就这样做:

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

这里明确表示,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的最小计数。你可以阅读DateTime。MSDN上的Ticks和TimeSpan

一个滴答声代表一百纳秒或千万分之一等一下。一毫秒有一万次滴答,也就是一千万个一秒一秒。

在同一个窗口窗体上有两个日期时间选择器。即使我在做dtpStartDate.Value.Date和dtpEndDate.Value的比较。日期,当两个日期时间选择器值看起来相同时,检查结束日期是否早于开始日期仍然出现错误。直到我将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
        }