我想使用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)。 我做错了吗?
答案 0 :(得分:0)
要明确说明,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.Ticks和TimeSpan上阅读
单个刻度表示一百纳秒或一千万分之一 一秒钟一毫秒内有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
}