关于datetime 比较大小失效的问题

我在程序中用到了两个datetimepicker控件,用户选择可以选择一个时间段来查询记录.但是datetimepicker控件默认的时间是当前时间,结束是时间是当前时间也就算了,这个倒对应用没什么影响,可以开始时间是当前时间就显得有此不妥了.但又不想把开始时间限制的一个固定的点.最好按时间往前推几天.
dtStart.Value = DateTime.Now.AddDays(-7);
我选择了前几天
接下来为比较用户是不是输入合法,用到了下面的代码
if(dtStart.Value.CompareTo(dtEnd.Value)>0)
当在选择相同时间时,按理说比较的结果应该是0;
按如下步骤就不灵了.
比如当前是1月31日 那么七天前显示的是24号.
进入界面后把dtend控件的时间也设置为24日
上面的if判断就为true了,调试发现显示的时期是一致的.
时间都是2008-1-24 16:37:34
但在进一步调试发现 两个时间Ticks不一致,且前一个比后一个值大.
大概这就是出现这种结果的原因吧.
去msdn发现这样Ticks是这样说明的.
属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。

想了一下,觉得也没必要非要和这个Ticks叫真.所以就用另一种办法了
            if(DateTime.Compare(dtStart.Value.Date,dtEnd.Value.Date)>0)
这样时间就能正确判断了.因为我不需要精确到分秒.
也许DateTime.Now.AddDays(-7) 方法没有改变Ticks的值吗.
还有一此想不明白.


posted @ 2008-01-31 16:50  Jerry Qian  阅读(1704)  评论(1编辑  收藏  举报