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
相关产品推荐
相关产品推荐

