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

C# MVC应用中JSON.parse后日期格式化为MM/dd/yyyy的方法

解决C# MVC AJAX返回日期格式化为MM/dd/yyyy的问题

前端处理方案

1. 原生JavaScript解析并格式化

先从/Date(1678206755990)/格式中提取时间戳,转换为Date对象后手动拼接成目标格式:

function formatDate(dateString) {
    // 提取时间戳
    const timestamp = parseInt(dateString.match(/\d+/)[0]);
    const date = new Date(timestamp);
    // 格式化月、日,确保两位数字
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const year = date.getFullYear();
    return `${month}/${day}/${year}`;
}

// 使用示例
const rawDate = "/Date(1678206755990)/";
const formattedDate = formatDate(rawDate); // 输出 "03/07/2023"

2. 利用Kendo UI的日期格式化工具

既然你已经在使用Kendo Grid,可以直接用Kendo内置的格式化方法,无需手动拼接:

function formatWithKendo(dateString) {
    const timestamp = parseInt(dateString.match(/\d+/)[0]);
    const date = new Date(timestamp);
    return kendo.toString(date, "MM/dd/yyyy");
}

// 使用示例
const formattedDate = formatWithKendo("/Date(1678206755990)/"); // 输出 "03/07/2023"

3. 自定义JSON解析器(全局处理)

如果有大量这类日期需要处理,可以在JSON.parse时添加reviver函数,自动转换日期格式:

const jsonString = '{"RefundDate":"/Date(1678206755990)/"}';
const data = JSON.parse(jsonString, (key, value) => {
    if (typeof value === 'string' && /^\/Date\(\d+\)\//.test(value)) {
        const timestamp = parseInt(value.match(/\d+/)[0]);
        const date = new Date(timestamp);
        return `${String(date.getMonth()+1).padStart(2,'0')}/${String(date.getDate()).padStart(2,'0')}/${date.getFullYear()}`;
    }
    return value;
});

// 此时data.RefundDate直接是格式化后的字符串:"03/07/2023"

后端处理方案(从根源解决)

修改ASP.NET MVC的JSON序列化配置,让接口返回的日期直接是指定字符串格式,避免前端额外处理:

方法1:使用Newtonsoft.Json配置

如果项目依赖Newtonsoft.Json,在Global.asax.cs的Application_Start方法中添加配置:

using Newtonsoft.Json;

protected void Application_Start()
{
    // 其他初始化代码...
    JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    {
        DateFormatString = "MM/dd/yyyy"
    };
}

方法2:ASP.NET Core MVC配置

在Program.cs中配置JSON序列化选项:

builder.Services.AddControllersWithViews()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.DateFormatString = "MM/dd/yyyy";
    });

这样AJAX接口返回的RefundDate会直接是"03/07/2023"格式,前端无需额外解析转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:43:16