确定两个日期之间是否有两个日期

时间:2014-07-18 06:40:48

标签: javascript

我想检查两个日期是否在另外两个日期之间。例如:

date aStart = 20-10-2013
date aEnd   = 30-10-2013
date bStart = 21-10-2013
date bEnd   = 29-10-2013

bStartbEnd介于aStartaEnd之间。目前我有这个代码,但它在某些条件下失败了:

if(bannerStartDateTime > bannerEndDateTime) {
    alert("Start Date Banner > End Date Banner.");
    return;
}
if(bannerStartDateTime < workOrderCampaignStartDateTime) {
    alert("Start Date Banner < Start Date WO.");
    return;
}
if(bannerEndDateTime < bannerStartDateTime) {
    alert("End Date Banner < Start Date Banner.");
    return;
}
if(bannerEndDateTime > workorderCampaignEndDateTime) {
    alert("End Date Banner > End Date WO.");
    return;
}

代码有什么问题?感谢。

3 个答案:

答案 0 :(得分:2)

  

代码有什么问题?

声明:

date aStart = 20-10-2013

无效的javascript。和

if (bannerStartDateTime > bannerEndDateTime)

使用两个尚未声明或初始化的标识符。

如果您的意思是转换字符串&#39; 20-10-2013&#39;到了约会,那么你需要写一个小解析器,如:

function dmyToDate(s) {
  var b = s.split(/\D+/);
  return new Date(b[2], --b[1], b[0]);
}

不要试图将日期字符串传递给Date构造函数,因为它会调用 Date.parse ,这在浏览器中是非常不一致的,即使使用格式specified in ECMA-262。 / p>

现在您的代码可以是:

var bannerStartDateTime = dmyToDate('20-10-2013');
var bannerEndDateTime   = dmyToDate('30-10-2013');

等等。然后,您可以使用<>运算符继续进行比较。

答案 1 :(得分:1)

if (bStart > aStart && bStart < aEnd && bEnd > aStart && bEnd < aEnd) {
    alert ("bStart-bEnd is between aStart-End");
}

答案 2 :(得分:0)

您必须在javascript中使用正确的日期格式和日期对象。

var aStart = new Date('2013-10-20');
var aEnd   = new Date('2013-10-30');
var bStart = new Date('2013-10-21');
var bEnd   = new Date('2013-10-29');

if ((bStart > aStart && bStart < aEnd) && (bEnd > aStart && bEnd < aEnd)) {
    alert ("bStart and bEnd both are between aStart and aEnd");
}
else if (bStart > aStart && bStart < aEnd) {
    alert ("bStart is between aStart-End");
}
else if (bEnd > aStart && bEnd < aEnd) {
    alert ("bEnd both is between aStart and aEnd");
}

DEMO