嗨大家我搜索了很多关于如何解决这个问题,但似乎没有什么对我有用我觉得我做错了什么我不知道解决这个问题。我交易ParseExact方法就像这里提出的所有线程一样但是这个错误总是出现在这里是我的示例代码:
Dim startDate = DateTime.ParseExact(DateTimePicker1.Text.ToString(), "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo)
Dim endDate = DateTime.ParseExact(DateTimePicker2.Text.ToString(), "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo)
Dim count As Integer
For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1
If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then
count = count + 1
MessageBox.Show(count)
End If
Next
在这段代码中,我试图计算一个DataGridView中的所有行,它将在两个DateTimePicker之间落在所选择的开始日期和结束日期之间。我不知道这是否会起作用,但我必须修复第一个错误,因此我可以验证它是否正常工作。我的DataGridView的日期格式是这样的:30/03/2016 15:51只是为了通知你。提前致谢! :)
答案 0 :(得分:1)
假设您的DataTimePicker1
实际上是DateTimePicker
控件,您可以使用Value
属性:
Dim startDate = DateTimePicker1.Value
此处不需要转换为字符串并返回日期。 [你的代码失败的原因可能与.ToString
没有以你指定的确切格式生成日期这一事实有关]
你也不需要在变量中保存它,所以你可以大大简化你的代码:
Dim count As Integer
For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1
If ServiceDataGridView.Rows(d).Cells(2).Value >= DateTimePicker1.Value AndAlso DateTimePicker2.Value <= ServiceDataGridView.Rows(d).Cells(2).Value Then
count = count + 1
MessageBox.Show(count)
End If
Next
请注意,您使用了&
,您应该使用AndAlso
- 请务必切换Option Strict On
来抓住这样的内容
答案 1 :(得分:0)
为什么不按原样使用DateTime值 ?像:
Dim startDate = DateTimePicker1.Value
Dim endDate = DateTimePicker2.Value
Dim count As Integer
For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1
If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then
count = count + 1
MessageBox.Show(count)
End If
Next
答案 2 :(得分:0)
您无需将DateTimePicker.Text
格式化为String
,然后将Parse
格式化为DateTime
即可使用它。只需使用DateTimePicker.Value
:
Dim startDate As DateTime = DateTimePicker1.Value 'This is already a DateTime
Dim endDate As DateTime = DateTimePicker2.Value
Dim count As Integer
For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1
If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then
count = count + 1
MessageBox.Show(count)
End If
Next
这就是说,取决于DateTimePicker.Format
DateTimePicker.Text
可能看起来多变的情况:
Wednesday, March 30, 2016 'Long
3/30/2016 'Short
因此与您的格式"dd/MM/yyyy HH:mm"
不符,因此会给您错误。