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)。我做错了什么吗?
如果你不在乎时间,那就这样做:
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
的最小计数。你可以阅读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
}