如何在JavaScript中正确显示SQL Server返回的日期数据?
解决JavaScript解析SQL Server序列化日期的问题
你遇到的问题是因为拿到的/Date(1675270800000)/是.NET序列化SQL Server日期的特殊格式,直接传入new Date()会解析失败,导致后续获取日期部分返回NaN。以下是两种可行的解决方案:
方案一:手动提取时间戳并格式化
先从序列化字符串中提取时间戳数字,再创建日期对象并手动拼接成目标格式:
$.each(data, function (i, dt) { // 提取字符串中的时间戳数字 var timestamp = parseInt(dt.Date.match(/\d+/)[0], 10); var date = new Date(timestamp); // 处理月份(getMonth返回0-11,需加1)和补前导零 var year = date.getFullYear(); var month = String(date.getMonth() + 1).padStart(2, '0'); var day = String(date.getDate()).padStart(2, '0'); var formattedDate = `${year}-${month}-${day}`; alert(formattedDate); });
方案二:使用Intl.DateTimeFormat自动格式化
如果目标浏览器支持ES6+,可以用原生日期格式化API,无需手动处理补零和月份偏移:
$.each(data, function (i, dt) { var timestamp = parseInt(dt.Date.match(/\d+/)[0], 10); var date = new Date(timestamp); // 配置格式化规则,替换斜杠为横杠 var formattedDate = new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' }).format(date).replace(/\//g, '-'); alert(formattedDate); });
关键说明
- 正则表达式
/\d+/用于匹配序列化日期字符串中的数字部分,这是正确创建日期对象的核心。 padStart(2, '0')确保月份和日期始终是两位数字,符合YYYY-MM-DD的格式要求。
内容的提问来源于stack exchange,提问作者Iyaf
相关产品推荐
相关产品推荐

