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

DataGridView提取日期赋值给DateTimePicker报字符串无法识别为有效DateTime错误如何解决

问题解决办法

问题根源

报错的核心原因是:DataGridView日期单元格的值本身是DateTime类型,你强制调用ToString()后得到的字符串格式受系统区域设置影响,和你传入ParseExact的yyyy-MM-dd格式不匹配,所以解析失败。

最优解决方案

优先不要转字符串解析,直接转换单元格的原始值为DateTime类型即可,完全规避格式适配问题,还能避免空值报错,替换原出错的两行代码即可:

// 先做非空判断避免空值异常
if (dtv_dis1.SelectedRows[0].Cells[1].Value != null && dtv_dis1.SelectedRows[0].Cells[1].Value != DBNull.Value)
{
    // 直接将原始DateTime值赋值,不需要转字符串解析
    dtp_date.Value = (DateTime)dtv_dis1.SelectedRows[0].Cells[1].Value;
}
else
{
    // 空值情况下给DateTimePicker赋默认值,可根据业务需求调整
    dtp_date.Value = DateTime.Now;
}

备选方案(仅当单元格存储的是字符串类型的日期时使用)

如果确认单元格里存的是字符串格式的日期,就用你实际取到的格式作为ParseExact的匹配规则,注意分钟的格式符是mm不是MM(MM代表月份):

String date = dtv_dis1.SelectedRows[0].Cells[1].Value.ToString();
// 用实际匹配的格式解析
dtp_date.Value = DateTime.ParseExact(date, "dd-MM-yyyy hh:mm:ss t", System.Globalization.CultureInfo.InvariantCulture);

内容的提问来源于stack exchange,提问作者Supayan Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:51:00