我有两个文本框分别接受 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;
}
举个例子,当我选择开始日期为 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'
endDate - startDate
的结果是 3283200000
,而不是 38
。我做错了什么?
最佳答案
3283200000 是以毫秒为单位的 38 天。
38 天 x 24 小时 x 60 分钟 x 60 秒 x 1000 毫秒
此外,这两个日期之间有 38 天,而不是 39 天。
一个简单的解决方案是将变量(实际上是常量)定义为一天中的毫秒数:
var days = 24*60*60*1000;
并在比较中将该变量用作“单位”:
if ((endDate - startDate) > 50*days) {
...
}
关于javascript - JavaScript 中的日期减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495043/