我的脚本在Chrome和Firefox中运行良好,但是当尝试与Safari版本5.1.7相同时,这可能是最新的Windows显示NAN值可以任何人帮助我解决这个问题我尝试了parseInt但它没有'工作。
这是我的代码;
var date1 = new Date($('#arrival').val());
var date2 = new Date($('#departure').val());
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
//parseInt("0"+$(this).html(),10)
diffDays=parseInt(diffDays);
console.log('Selected diffDays: '+diffDays);
parseint的评论部分显示我0。
答案 0 :(得分:3)
最有可能的答案是Safari不支持您从#arrival
和#departure
字段中读取的日期格式。 JavaScript仅具有one date string format,这在兼容的实现中是必需的,并且这是相当近期的(大约三年前,从ES5开始)。 (也就是说,我从未遇到过不支持yyyy/MM/dd
的浏览器,但结果日期的时区会有所不同。)
如果您将无效字符串输入new Date()
,则会收到无效日期。 getTime
方法返回带有无效日期的NaN
,然后当然会在整个计算过程中传播(如果任何操作数为NaN
,则所有数学运算符的结果为NaN
)
解决方案是确保字符串采用支持的格式,或者自己解析它们。还有一些图书馆需要帮助,例如MomentJS。