ASP.NET MVC中jQuery Ajax日期解析与格式转换问题
解决ASP.NET MVC中jQuery Ajax日期格式化问题
问题原因
你碰到的Invalid Date错误,是因为直接用parseInt(GetSTTList[i].RequiredVisitDate)解析整个Date(1665774000000)字符串时,parseInt从左到右读取,遇到字母D就停止解析,返回NaN,自然无法生成有效的Date对象。
日期解析与格式化方案
先从Date(1665774000000)里提取时间戳数字,转成Date对象后,再手动格式化为15-Oct-2022格式:
// 处理单条数据的日期 const rawDate = GetSTTList[i].RequiredVisitDate; // 提取括号内的时间戳(两种方法任选其一) // 方法1:正则匹配数字部分 const timestamp = parseInt(rawDate.match(/\d+/)[0]); // 方法2:字符串截取(要去掉末尾的右括号) // const timestamp = parseInt(rawDate.substr(6, rawDate.length - 7)); const date = new Date(timestamp); // 定义英文月份缩写数组 const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 拼接成目标格式 const formattedDate = `${date.getDate()}-${monthAbbrs[date.getMonth()]}-${date.getFullYear()}`; // 此时formattedDate即为"15-Oct-2022"格式
后端优化方案(可选)
如果不想在前端处理Date(...)这种非标准格式,可在控制器层直接返回ISO标准格式的日期,前端解析会更简便:
// 控制器中修改日期输出格式 RequiredVisitDate = x.RequiredVisitDate.ToString("yyyy-MM-ddTHH:mm:ss"),
前端此时直接解析ISO字符串即可:
const date = new Date(GetSTTList[i].RequiredVisitDate); // 再用上面的格式化方法转成目标格式
内容的提问来源于stack exchange,提问作者Farhan Ahmed
相关产品推荐
相关产品推荐

