javascript - JavaScript 中的日期减法

标签 javascript date subtraction

我有两个文本框分别接受 Start DateEnd 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/

相关文章:

assembly - 汇编中减去负数

javascript - JSON - 根据用户输入更改键值对

javascript - AngularStrap 数据开始日期不允许选择日期

mysql - SQL:查询大于 X 个月和 Y 天前的日期

javascript - 如何在 JavaScript 中具体格式化日期?

Java模式正则表达式减法与贪婪量词

javascript - 如何影响传递给函数的字符串对象

javascript - 与 CKEditor 3 集成的 ASPNetSpell 拼写检查器不适用于 Chrome

javascript - 仅使用纯 JavaScript 检查字符串是否为回文

PHP:最简单的方法是在第一个 6 个月前获取月份的日期?