You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET程序中DateTimePicker赋值时出现有效DateTime识别错误的求助

解决VB.NET中DateTimePicker日期解析错误的问题

你遇到的这个错误String was not recognized as a valid DateTime because the day of week was incorrect,核心原因是直接给DateTimePicker的Text属性赋值包含星期全称的字符串(比如"Minggu/05/2024")时,.NET的日期解析器无法正确识别这种格式——它会尝试把星期部分当作日期的一部分去解析,自然就会抛出无效日期的错误。

下面是具体的修复方案,按优先级排序:

1. 直接赋值DateTime类型给Value属性(推荐)

数据库中的日期字段如果是DateTime类型,从OleDbDataReader读取时直接转换成DateTime,然后赋值给DateTimePicker的Value属性,完全绕开字符串解析的问题:

' 替换原来的dtp_xxx.Text赋值代码,改成如下形式
dtp_surat_pengantar_rt.Value = CDate(RD.Item("tgl_srt_pngtr_rt"))
dtp_surat_Pengantar_camat.Value = CDate(RD.Item("tgl_srt_pngtr_cmt"))
dtp_surat_acara_kesaksian.Value = CDate(RD.Item("tgl_brt_acr_sksi"))
dtp_surat_keterangan.Value = CDate(RD.Item("tgl_srt_ktrgn"))
dtp_surat_pemohon.Value = CDate(RD.Item("tgl_srt_pmh"))
dtp_tgl_surat_riwayat_kuasa.Value = CDate(RD.Item("tgl_srt_rwyt_ksa"))

如果数据库中日期是以字符串形式存储的(不推荐这种设计),就需要用DateTime.ParseExact指定精确格式来解析:

' 需要先引入System.Globalization命名空间
Imports System.Globalization

' 示例代码
Dim tglRtStr As String = RD.Item("tgl_srt_pngtr_rt").ToString()
dtp_surat_pengantar_rt.Value = DateTime.ParseExact(tglRtStr, "dddd/MM/yyyy", CultureInfo.InvariantCulture)

2. 正确配置DateTimePicker的显示格式

确保你的DateTimePicker控件已经设置为自定义格式显示:

  • 在设计器中选中DateTimePicker,把Format属性设置为Custom
  • 把CustomFormat属性设置为dddd/MM/yyyy
    这样控件会自动将Value属性中的DateTime值按照你想要的格式显示,不需要手动处理字符串。

3. 额外的优化建议

处理DBNull值

如果数据库中可能存在空日期,需要添加空值判断,避免转换出错:

If Not RD.IsDBNull(RD.GetOrdinal("tgl_srt_pngtr_rt")) Then
    dtp_surat_pengantar_rt.Value = CDate(RD.Item("tgl_srt_pngtr_rt"))
Else
    ' 可以设置控件为空,或者给出默认值
    dtp_surat_pengantar_rt.Value = DateTime.Now ' 或者根据需求处理
End If

避免SQL注入风险

你当前的SQL语句用了字符串拼接,存在严重的SQL注入风险,建议改用参数化查询:

CMD = New OleDbCommand("select * From data_surat where kode_nomor=?", Conn)
CMD.Parameters.AddWithValue("@kode", Textbox_kode_nomor.Text)

按照以上步骤修改后,应该就能解决日期解析的错误了。

内容的提问来源于stack exchange,提问作者Sirkof Harryo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:28:11