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

通过AJAX传递DateTime值遇格式异常的解决方法咨询

问题描述

前端通过AJAX提交数据至ASP.NET后端服务,代码如下:

var val2 = $('#range').val();
var val3 = $('#name').val();
var val4 = $('#born').val();
var formData = {
  'range': val2,
  'firstName': val3,
  'bornDate': val4 // 日期类型值
}
var conData = {
  user: formData
}

$.ajax({
  type: "POST",
  url: "/NilvimAjaxService.aspx/InsertNew",
  data: JSON.stringify(conData),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(data) {},
  error: function(date) {}
});

当日期格式为01/01/2012时请求可正常执行,但使用25/01/2012时,后端抛出异常:

ExceptionType : "System.FormatException" Message : "25/01/2012 is not a valid value for a DateTime."

解决方案

方案1:前端转换为标准ISO日期格式

后端默认采用MM/dd/yyyy(月/日/年)格式解析DateTime,而25/01/2012是dd/MM/yyyy(日/月/年)格式,导致解析失败。可以在前端将日期转为ISO 8601标准格式(如2012-01-25T00:00:00),该格式能被ASP.NET自动正确识别。

修改前端代码中bornDate的处理逻辑:

// 拆分dd/MM/yyyy格式的日期字符串
var dateSegments = val4.split('/');
// 注意:JS的Date对象月份是0-11,所以要减1
var parsedDate = new Date(dateSegments[2], dateSegments[1] - 1, dateSegments[0]);
// 转换为ISO标准格式字符串
var standardDate = parsedDate.toISOString();

var formData = {
  'range': val2,
  'firstName': val3,
  'bornDate': standardDate
}

方案2:后端手动指定日期解析格式

若无需改动前端,可在后端服务的InsertNew方法中,强制按dd/MM/yyyy格式解析日期:

public static void InsertNew(User user)
{
    DateTime parsedBornDate;
    // 按指定格式解析日期,使用InvariantCulture避免区域差异
    if (DateTime.TryParseExact(user.bornDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedBornDate))
    {
        // 使用解析后的日期进行后续业务操作
    }
    else
    {
        // 处理格式错误的情况
        throw new ArgumentException("日期格式无效,请使用dd/MM/yyyy格式");
    }
}

方案3:全局配置后端日期解析文化

如果整个系统都需要支持dd/MM/yyyy格式,可在Web.config中配置全局文化为英国英语(默认日期格式为日/月/年):

<configuration>
  <system.web>
    <globalization culture="en-GB" uiCulture="en-GB" />
  </system.web>
</configuration>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:35:10