Javascript 日期差异在Firefox和IE中有效,但在Chrome中返回NaN
我用的是:Javascript 日期差异在Firefox和IE中有效,但在Chrome中返回NaN,javascript,google-chrome,date,firefox,Javascript,Google Chrome,Date,Firefox,我用的是: function DateDiff(date1, date2) { var datediff = date2.getTime()- date1.getTime(); return (datediff); } $(document).on('dp.change', '#EndDate', function (e) { var StartDate= new Date($('#StartDate').val
function DateDiff(date1, date2) {
var datediff = date2.getTime()- date1.getTime();
return (datediff);
}
$(document).on('dp.change', '#EndDate', function (e) {
var StartDate= new Date($('#StartDate').val());
var EndDate= new Date($('#EndDate').val());
alert(DateDiff(EndDate, StartDate));
...
它不工作,在Chrome中返回NaN(实际上我正在尝试更改DateTimePicker上的天数,它工作到第12天,但在第12天之后返回NaN)
但是它可以在Firefox或IE中使用。使用
momentjs
如果您的输入是'DD/MM/YYYY'不要使用日期构造函数来解析字符串,请始终手动解析字符串(库可以帮助,但通常不需要)。例如,要解析d/m/y格式的字符串并验证日期,请考虑:
function parseDMY(s) {
var b = s.split(/\D/);
var d = new Date(b[2], --b[1], b[0]);
return d && d.getMonth() == b[1]? d : new Date(NaN);
}
它不起作用。我不明白为什么它可以在Firefox或IE中使用,为什么不能在ChromeShow中使用,请使用id
StartDate
和EndDate
?输入值的格式必须是数字不正确。使用momentjs
来做你需要的事情,因为你的格式不是日期构造的标准。好的,我知道问题出在哪里了。我又看了一遍,因为格式的原因,它显示的是五月而不是三月。你确定这在chrome中不起作用吗?$('#StartDate').val()和$('#EndDate').val()返回什么?第10000次,不要使用日期构造函数(或Date.parse,它们做同样的事情)来解析字符串,这在很大程度上取决于实现。编写一个两行函数来手动解析它(或者使用库,但是学习库的时间比编写函数的时间要多)。