Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是.net DateTime.Compare函数中的错误吗?_.net_Vb.net - Fatal编程技术网

这是.net DateTime.Compare函数中的错误吗?

这是.net DateTime.Compare函数中的错误吗?,.net,vb.net,.net,Vb.net,我有一个带有两个DateTimePicker控件的窗体 DateTime.Compare如果具有相同的值,但认为它们不相同,则应返回0: ?DateTime.Compare(DatePicker.dtpFrom.Value, DatePicker.dtpTo.Value) 1 ?datepicker.dtpFrom.Value #9/20/2012 7:00:46 PM# ?DatePicker.dtpTo.Value #9/20/2012 7:00:46 PM# 我是不是想得不清楚?这肯

我有一个带有两个DateTimePicker控件的窗体

DateTime.Compare如果具有相同的值,但认为它们不相同,则应返回0:

?DateTime.Compare(DatePicker.dtpFrom.Value, DatePicker.dtpTo.Value)
1

?datepicker.dtpFrom.Value
#9/20/2012 7:00:46 PM#

?DatePicker.dtpTo.Value
#9/20/2012 7:00:46 PM#
我是不是想得不清楚?这肯定不是.NET框架中的错误

更新 好的,我检查了毫秒值,它们是关闭的(非常轻微)。古怪!我想这与控件构造和默认值设置时的细微延迟有关

?DatePicker.dtpTo.value.ToString("fff")
"616"
?datepicker.dtpFrom.Value.ToString("fff")
"619"
我只关心日期部分,所以我解决了它:

If DateTime.Compare(DatePicker.dtpFrom.Value.Date, DatePicker.dtpTo.Value.Date) > 0 Then
                MsgBox("From_Date cannot be after To_Date", MsgBoxStyle.OkOnly, "Data validation error")

比较多个DateTimePicker控件时要小心。即使没有用户编辑其默认值,其值的毫秒部分的微小差异也会导致意外的比较结果

例如,假设表单上有两个DateTimePicker控件:FromDate和ToDate,用于建立报表的日期范围

如上面的问题所示,比较这两个值以确保FromDate不大于ToDate可能会导致意外结果

如果只关心这些控件的日期部分,则可以在执行比较时通过读取value属性上的Date属性删除时间值

If DateTime.Compare(dtpFrom.Value.Date), DateValue(dtpTo.Value.Date) > 0 Then
{invalid range error message}
要检查,值1表示dtpFrom.value大于dtpTo

我还建议两个日期之间有一到两毫秒的差异,因为即使到了第二秒,它们也可能不一样

我建议比较.ToString(“yyyy-MM-dd-HH:MM:ss”)值,以了解毫秒差异

更新

在评论之后,这里有一个更好的建议,可以去掉毫秒


dateTime.AddTicks(-(dateTime.Ticks%TimeSpan.TicksPerSecond))

我同意马特的观点。>0不是相等性测试。如果你要回答自己的问题,正确的方式是将答案作为答案发布。>我同意马特的观点。>0不是相等性测试。是的,我不是在测试平等。FromDate必须等于或大于ToDate。但是比较两个DateTimePicker控件的未编辑默认值的结果是,它们不相等,我希望它们相等。请将您的解决方案作为答案发布。@Blam似乎认为它在这个问题上效果最好。但是读完这篇文章,好吧,我会把它贴出来!什么,“如果你要回答自己的问题,正确的格式是将答案作为答案发布。”@DanielHilgarth OK,所以字符串不是比较日期部分的好方法。但是Matt在>0上是正确的,这不是一个相等的比较。在我的应用程序中,我只是测试FromDate是否小于或等于ToDate,否则我会向用户投诉。(再次更新问题,使问题更加明确)。让我恼火的是,同一表单上两个datetimepicker控件的未编辑默认值不是相同的值。我原以为他们会的!