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

ASP.NET MVC中Ajax获取DateTime显示为/Date(xxx)/问题求助

解决ASP.NET MVC Ajax返回日期显示为/Date(xxx)/的问题

方法一:后端直接返回格式化后的日期字符串

修改Controller代码,将DateTime对象转换为指定格式的字符串后返回,前端无需额外处理即可直接赋值:

public JsonResult GetWorkDuration(int Id)
{
    if (Id != 0)
    {
        int workDuration = db.Services.First(x => x.Id == Id).Work_Duration_Dates;
        DateTime serviceEndDate = DateTime.Now.AddDays(workDuration);
        // 按照你需要的格式转换,示例为MM/dd/yyyy hh:mm:ss tt(对应10/7/2022 12:32:48 PM)
        return Json(new { Success = true, EndDate = serviceEndDate.ToString("MM/dd/yyyy hh:mm:ss tt") });
    }
    else
    {
        return Json(new { Success = false });
    }
}

方法二:全局配置JSON序列化规则

如果希望所有接口返回的日期都统一格式,可在全局配置JSON序列化设置,让ASP.NET返回ISO标准格式或自定义格式的日期:

在Global.asax的Application_Start方法中添加配置:

protected void Application_Start()
{
    // 其他初始化代码...
    JsonSerializerSettings jsonSettings = new JsonSerializerSettings();
    // 方式1:返回ISO标准格式日期(如"2022-10-07T12:32:48")
    jsonSettings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
    // 方式2:指定自定义格式
    // jsonSettings.DateFormatString = "MM/dd/yyyy hh:mm:ss tt";
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = jsonSettings;
}

配置后,前端拿到ISO格式日期后,可通过JavaScript的Date对象进一步格式化:

success: function (data) {
    if (data.Success == true) {
        var dateObj = new Date(data.EndDate);
        var formattedDate = dateObj.toLocaleString('en-US', {
            month: '2-digit',
            day: '2-digit',
            year: 'numeric',
            hour: '2-digit',
            minute: '2-digit',
            second: '2-digit',
            hour12: true
        });
        document.getElementById('WorkDuration').value = formattedDate;
    }
}

方法三:前端解析/Date(xxx)/格式字符串

如果无法修改后端代码,可在前端编写工具函数解析这种微软特定的JSON日期格式:

// 解析ASP.NET格式的日期字符串
function parseAspNetDate(dateStr) {
    var timestamp = parseInt(dateStr.match(/\d+/)[0]);
    return new Date(timestamp);
}

// 在Ajax成功回调中使用
success: function (data) {
    if (data.Success == true) {
        var dateObj = parseAspNetDate(data.EndDate);
        var formattedDate = dateObj.toLocaleString('en-US', {
            month: '2-digit',
            day: '2-digit',
            year: 'numeric',
            hour: '2-digit',
            minute: '2-digit',
            second: '2-digit',
            hour12: true
        });
        document.getElementById('WorkDuration').value = formattedDate;
    }
}

也可以用更简洁的写法直接提取时间戳:

var dateObj = new Date(parseInt(data.EndDate.substr(6)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:40:26