我想检查两个日期是否在另外两个日期之间。例如:
date aStart = 20-10-2013
date aEnd = 30-10-2013
date bStart = 21-10-2013
date bEnd = 29-10-2013
bStart
和bEnd
介于aStart
和aEnd
之间。目前我有这个代码,但它在某些条件下失败了:
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;
}
代码有什么问题?感谢。
答案 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");
}