@gib 感谢您对 Moment.js 的建议。这个小型库确实有助于处理日期和 JavaScript。
Moment.js 解决了我也遇到的原始问题中描述的问题。IE8 在解析为新的 Date() 对象时将 JSON ISO 日期显示为 NaN。
快速解决方案(在您的页面中包含 moment.js,或将代码复制到您的 js 函数中包含)
如果您只需要在页面上显示从 JSON ISO 日期加载的日期,请执行以下操作:
order_date = moment(data.OrderDate); //create a "moment" variable, from the "data" object in your JSON function in Protoype or jQuery, etc.
$('#divOrderDate).html(order_date.calendar()); //use Moment's relative date function to display "today", "yesterday", etc.
或者
order_date = moment(data.OrderDate); //create a "moment" variable, from the "data" object in your JSON function in Protoype or jQuery, etc.
$('#divOrderDate).html(order_date.format('m/d/YYYY')); //use Moment's format function to display "2/6/2015" or "10/19/2014", etc.
如果您必须有一个 Date() 对象(例如用于 jQuery 组件),请执行以下操作以成功填充 JSON 提供的 ISO 日期。(这假设您已经在处理 JSON 数据的函数中。)
var ship_date = new Date(moment(data.ShipDate).format('m/d/YYYY')); //This will successfully parse the ISO date into JavaScript's Date() object working perfectly in FF, Chrome, and IE8.
//initialize your Calendar component with the "ship_date" variable, and you won't see NaN again.