如果當前時間爲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中兩個時間進行比較時,要注意兩個時間的精度。
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;
}
}