如果当前时间为2007年7月19日13时56分47秒
Convert.ToDateTime("07/07/19").CompareTo(DateTime.Now) 此时返回的值为“-1”
结果:Convert.ToDateTime("07/07/19")所表示的时间小于DateTime.Now
原因
Convert.ToDateTime("07/07/19")所表示的时间为:2007-7-19 0:00:00
DateTime.Now所表示的时间为:2007-7-19 13:56:47
如果我们现在只要做到精确到“日”的时间比较,那么就要把两个时间统到同一精度。
方法
Convert.ToDateTime("07/07/19").CompareTo(Convert.ToDateTime(DateTime.Now.ToString("yy/MM/dd"))) 此时返回的值为“0”
结果:两个时间相等
结论
DateTime中两个时间进行比较时,要注意两个时间的精度。
FeedBack:
@qwq
dateTimePicker1.Value {2008/01/31 5:30:42} System.DateTime
Date {2008/01/31 0:00:00} System.DateTime
Day 31 int
DayOfWeek Thursday System.DayOfWeek
DayOfYear 31 int
Hour 5 int
Kind Local System.DateTimeKind
Millisecond 296 int
Minute 30 int
Month 1 int
Second 42 int
Ticks 633373542422968750 long
TimeOfDay {05:30:42.2968750} System.TimeSpan
Year 2008 int
dateTimePicker2.Value {2008/01/31 5:30:42} System.DateTime
Date {2008/01/31 0:00:00} System.DateTime
Day 31 int
DayOfWeek Thursday System.DayOfWeek
DayOfYear 31 int
Hour 5 int
Kind Local System.DateTimeKind
Millisecond 250 int
Minute 30 int
Month 1 int
Second 42 int
Ticks 633373542422500000 long
TimeOfDay {05:30:42.2500000} System.TimeSpan
Year 2008 int
以上是加断点后监视到的dateTimePicker1.Value与dateTimePicker2.Value的值,表面上{2008/01/31 5:30:42}与{2008/01/31 5:30:42}一致,但Millisecond:296 > 250,这可能是造成“时对时错”的原因。
修改如下:
int v = dateTimePicker1.Value.Date.CompareTo(dateTimePicker2.Value.Date);
if (!(dateTimePicker1.Value.Date.Equals(dateTimePicker2.Value.Date)))
{
if (v > 0)
{
MessageBox.Show("交货时间不能提前与接货时间!!!");
return false;
}
}
dateTimePicker1.Value {2008/01/31 5:30:42} System.DateTime
Date {2008/01/31 0:00:00} System.DateTime
Day 31 int
DayOfWeek Thursday System.DayOfWeek
DayOfYear 31 int
Hour 5 int
Kind Local System.DateTimeKind
Millisecond 296 int
Minute 30 int
Month 1 int
Second 42 int
Ticks 633373542422968750 long
TimeOfDay {05:30:42.2968750} System.TimeSpan
Year 2008 int
dateTimePicker2.Value {2008/01/31 5:30:42} System.DateTime
Date {2008/01/31 0:00:00} System.DateTime
Day 31 int
DayOfWeek Thursday System.DayOfWeek
DayOfYear 31 int
Hour 5 int
Kind Local System.DateTimeKind
Millisecond 250 int
Minute 30 int
Month 1 int
Second 42 int
Ticks 633373542422500000 long
TimeOfDay {05:30:42.2500000} System.TimeSpan
Year 2008 int
以上是加断点后监视到的dateTimePicker1.Value与dateTimePicker2.Value的值,表面上{2008/01/31 5:30:42}与{2008/01/31 5:30:42}一致,但Millisecond:296 > 250,这可能是造成“时对时错”的原因。
修改如下:
int v = dateTimePicker1.Value.Date.CompareTo(dateTimePicker2.Value.Date);
if (!(dateTimePicker1.Value.Date.Equals(dateTimePicker2.Value.Date)))
{
if (v > 0)
{
MessageBox.Show("交货时间不能提前与接货时间!!!");
return false;
}
}