[英]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.Ticks和TimeSpan
一个刻度代表一百纳秒或百万分之一秒。 一毫秒有 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.