检查一个日期是否介于两个日期之间

2022-08-30 05:29:22

我需要检查a - 格式字符串 - 是否落在具有相同格式的其他两个日期之间datedd/mm/yyyydd/mm/yyyy

我试过这个,但它不起作用:

var dateFrom = "02/05/2013";
var dateTo = "02/09/2013";
var dateCheck = "02/07/2013";

var from = Date.parse(dateFrom);
var to   = Date.parse(dateTo);
var check = Date.parse(dateCheck );

if((check <= to && check >= from))      
    alert("date contained");

我使用调试器并检查,和变量具有值。你能帮我吗?tofromisNaN


答案 1

Date.parse支持的格式不是 。对于后者,要么使用像 moment 这样的库.js要么执行如下所示的操作mm/dd/yyyydd/mm/yyyy

var dateFrom = "02/05/2013";
var dateTo = "02/09/2013";
var dateCheck = "02/07/2013";

var d1 = dateFrom.split("/");
var d2 = dateTo.split("/");
var c = dateCheck.split("/");

var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]);  // -1 because months are from 0 to 11
var to   = new Date(d2[2], parseInt(d2[1])-1, d2[0]);
var check = new Date(c[2], parseInt(c[1])-1, c[0]);

console.log(check > from && check < to)

答案 2

与其直接比较日期,不如比较日期的 getTime() 值。getTime() 函数将自 1970 年 1 月 1 日以来的毫秒数作为整数返回 - 对于确定一个整数是否落在其他两个整数之间应该是微不足道的。

类似的东西

if((check.getTime() <= to.getTime() && check.getTime() >= from.getTime()))      alert("date contained");