所以基本上,我遇到这个错误:错误图片链接
通常,我会接受我的代码是错误的并进行修复,但事实是它似乎在大多数时间都有效。而且我找不到个案之间的区别。为什么“ 04-09-2018”可以很好地用作日期,而“ 17-08-2019”却被当作字符串?
此代码从datagridview中的单元格获取日期,该日期使用数据库中的格式临时存储日期:
Private Sub wrty_show()
Dim dt As Date : Dim difd As String
dt = DataGridView1.CurrentRow.Cells(3).Value
difd = DateDiff("d", dt, Today)
If (difd >= 365) Then : Label11.Text = "Invalid" : Label11.ForeColor = System.Drawing.Color.Red
ElseIf (difd < 365) Then : Label11.Text = "Valid" : Label11.ForeColor = System.Drawing.Color.Green
End If
End Sub
这是我用来从数据库中检索日期到datagridview单元格中的查询的一部分,并显示特殊格式(以某种方式,我认为这会将Date转换为String,但我不确定100%,因为我没有太多处理日期的经验):
DATE_FORMAT(w.wrty_date , '%d-%m-%Y') AS wrty_date
我知道格式与错误有关,因为我在没有该程序的情况下测试了该程序,并且效果很好。但是格式是必需的,并且如果它是导致每个项最终出现错误的主要原因,而不仅仅是其中一些。我当然想出了一些解决方法,但是我想知道为什么该错误不是确定性的,有时会出现,并且由于这是我的第一个问题,因此我不了解很多规则,因此对任何不适当的内容表示歉意或缺乏适当的信息。如果我缺少什么,请告诉我,我会更新信息。
为什么“ 04-09-2018”可以很好地用作日期,而“ 17-08-2019”却被当作字符串?
由于当前线程区域性的日期格式运行为“ mm-dd-yyyy”,因此当您尝试分配“ 04-09-2018”时,系统能够在2018年4月9日进行转换,但是当您尝试分配“ 17-08-2019“系统无法将其转换为日期。
试试下面的代码
Private Sub wrty_show()
Dim dt As Date : Dim difd As String
dt = DateTime.ParseExact(DataGridView1.CurrentRow.Cells(3).Value, "dd-MM-yyyy", CultureInfo.InvariantCulture)
difd = DateDiff("d", dt, Today)
If (difd >= 365) Then : Label11.Text = "Invalid" : Label11.ForeColor =
System.Drawing.Color.Red
ElseIf (difd < 365) Then : Label11.Text = "Valid" : Label11.ForeColor =
System.Drawing.Color.Green
End If
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句