这是一个代码片段,我必须选择一个合适的日期来预约,它应该做一个简单的验证,即为约会选择的日期是当前日期或晚于该日期的日期。 / p>
if (dateTimePicker1.Value < DateTime.Now)
toolStripStatusLabel1.Text = "Date Selected is not Proper";
else (dateTimePicker1.Value >= DateTime.Now)
toolStripStatusLabel1.Text = "Date Selected is " + dateTimePicker.Value;
但是,当我选择当前日期时,它总是进入if块。当我选择一个晚于当前日期的日期时,它可以正常工作。
谢谢
答案 0 :(得分:4)
您忘记了DateTime的时间部分。你应该改用它:
if (dateTimePicker1.Value < DateTime.Today)
toolStripStatusLabel1.Text = "Date Selected is not Proper";
else (dateTimePicker1.Value >= DateTime.Today)
toolStripStatusLabel1.Text = "Date Selected is " + dateTimePicker.Value;
答案 1 :(得分:2)
因为DateTime.Now
不仅返回数据,还返回时间。所以要解决这个问题:
使用DateTime.Now.Date
代替DateTime.Now
答案 2 :(得分:2)
因为DateTime.Now包含当天的时间,所以请尝试DateTime.Today这只获取日期。
答案 3 :(得分:2)
DateTime.Now包括两者日期和时间,以及
'2011-07-29'总是小于'2011-07-29 13:50:00'
使用DateTime.Now.Date
或DateTime.Today
进行此类比较。
答案 4 :(得分:0)
DateTimePicker有一个MinimumDate属性可以为你做这个检查 - 你试过吗?这是文档:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.mindate(v=vs.80).aspx
另外,请记住DateTime.Now有小时/分钟/秒 - 从您的示例中不清楚您是否只想比较DateTime的日期部分...?
希望这有帮助,
约翰
答案 5 :(得分:0)
这是由于毫秒的差异..你只需要检查日期部分而不是时间部分...尝试使用只有日期的TimeSpan
这可以解决你的问题。