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

DateTime.ParseExact使用yyyy-MM-dd格式报错无法识别有效DateTime如何解决

问题解决方案

核心原因

报错是由于前端日期控件输出格式与后端预期解析格式不匹配导致:你当前配置的jQuery datepicker输出格式为yyyy/MM/dd,同时土耳其语(tr)本地化规则也会影响日期的输出顺序/分隔符,和后端ParseExact要求的yyyy-MM-dd格式不一致,因此解析失败。

最优解决方案(推荐)

直接修改前端datepicker的输出格式,和后端要求对齐即可:

  • 注意区分你使用的datepicker类型,调整对应配置:
    1. 如果你使用的是jQuery UI Datepicker:
    $(function () {
        $('[id*=txtDate]').datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: "yy-mm-dd", // 此处yy对应4位年份,输出结果为yyyy-MM-dd格式
            language: "tr"
        });
    });
    
    1. 如果你使用的是Bootstrap Datepicker:
    $(function () {
        $('[id*=txtDate]').datepicker({
            changeMonth: true,
            changeYear: true,
            format: "yyyy-mm-dd", // 直接指定输出格式为yyyy-MM-dd
            language: "tr"
        });
    });
    
  • 后端C#代码无需修改,建议把文化参数替换为CultureInfo.InvariantCulture避免区域规则干扰:
using System.Globalization;

DateTime x = DateTime.ParseExact(txtDate1.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture).AddDays(7);

备选方案(无需修改前端)

如果前端代码不可调整,可以给ParseExact传入多格式兼容数组,自动匹配前端返回的日期格式:

using System.Globalization;

// 把前端可能返回的所有格式都加入数组
string[] allowFormats = { "yyyy/MM/dd", "dd/MM/yyyy", "yyyy-MM-dd" };
DateTime x = DateTime.ParseExact(txtDate1.Text, allowFormats, new CultureInfo("tr-TR"), DateTimeStyles.None).AddDays(7);

内容的提问来源于stack exchange,提问作者patipat nuntapet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:45:05