如何在JavaScript中将\/Date(1567074191725)\/转为指定格式日期?
解决.NET JSON日期格式转换问题
我来帮你搞定这个日期转换的坑!你遇到的是.NET序列化JSON时默认生成的/Date(时间戳)/格式,直接把这个字符串传给new Date()肯定不行——Date构造函数根本不认这种格式。咱们得先把里面的时间戳提取出来,再转成需要的日期格式。
核心思路拆解
- 提取有效时间戳:从
/Date(1567074191725)/这种字符串里抠出数字部分,这才是Date能识别的毫秒数 - 格式化目标日期:把Date对象转成
日/月/年的格式,注意JS里月份是从0开始的(9月对应数字8,得加1)
修改后的完整代码
直接替换你现有的render函数和转换函数就行:
var values = @Html.Raw(Json.Encode(ViewBag.records)); // DataTable列配置 { title: "DATE", data: "timestamp", render: function (data) { return convertDotNetDate(data); } }, // 自定义日期转换函数 function convertDotNetDate(dateStr) { // 用正则提取时间戳数字 const timestamp = parseInt(dateStr.match(/\d+/)[0], 10); const date = new Date(timestamp); // 提取日、月、年,月份要+1修正JS的0起始问题 const day = date.getDate(); const month = date.getMonth() + 1; const year = date.getFullYear(); // 拼接成你要的格式 return `${day}/${month}/${year}`; }
可选优化:补零处理
如果需要把单数字的日/月补零(比如把9变成09),可以加个简单判断:
function convertDotNetDate(dateStr) { const timestamp = parseInt(dateStr.match(/\d+/)[0], 10); const date = new Date(timestamp); const day = date.getDate().toString().padStart(2, '0'); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const year = date.getFullYear(); return `${day}/${month}/${year}`; }
内容的提问来源于stack exchange,提问作者developer .net
相关产品推荐
相关产品推荐

