繁体   English   中英

C# DateTimePicker 比较问题

[英]C# DateTimePicker comparison issue

我想使用 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)。 我做错了什么吗?

如果您不在乎时间,请执行以下操作:

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

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

我相信当创建两个不同的DateTimePicker控件时,它们的值相差不到一秒,从而导致了问题。 如果你的目的是简单地比较DateTime用的最少数量second ,那么你就可以做到这一点

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 万个滴答声。

我在同一个窗体上有两个日期时间选择器。 即使我对 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
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM