JavaScript中的日期减法

use*_*523 5 javascript date subtraction

我有两个文本框接受它Start Date,并End Date分别在格式YYYY/MM/DD.

如果用户选择超过开始日期50天的结束日期,我需要提醒用户.

这是我到目前为止所拥有的:

var startDate = new Date(document.getElementsByName('MYSTARTDATE').value);
var endDate = new Date(document.getElementsByName('MYENDDATE').value);
if ((endDate - startDate) > 50) 
{
    alert('End date exceeds specification');
    return false;
}
Run Code Online (Sandbox Code Playgroud)

举个例子,我选择开始日期为2012/01/22和结束日期为2012/02/29

startDate = 'Sun Jan 22 00:00:00 UTC +0530 2012'
endDate = 'Wed Feb 29 00:00:00 UTC +0530 2012'
Run Code Online (Sandbox Code Playgroud)

结果endDate - startDate3283200000,而不是.38我做错了什么?

Jef*_*f B 9

3283200000是38天(以毫秒为单位).

38天x 24小时x 60分钟x 60秒x 1000毫秒

此外,这两个日期之间有38天,而不是39天.

一个简单的解决方案是将变量(实际上常量)定义为一天中的毫秒数:

var days = 24*60*60*1000;
Run Code Online (Sandbox Code Playgroud)

并在比较中将该变量用作"单位":

if ((endDate - startDate) > 50*days) { 
     ...
}
Run Code Online (Sandbox Code Playgroud)