gpt4 book ai didi

javascript - 日期范围是否包含两个特定日期

转载 作者:行者123 更新时间:2023-11-28 01:01:07 24 4
gpt4 key购买 nike

我正在使用 moment.js,并试图弄清楚提供的日期范围是否至少包括一整周,其中一周的定义是包括星期一到下一个星期日。

例如。如果日期范围包括星期三到星期三,我需要返回 false,因为它没有星期一到星期日的示例。

但是,周四到下周一就可以了,因为它包含完整的周一 -> 周日周期。

我有一个简单的日期对象

Object {
start: "2014-03-31T13:00:00.000Z",
end: "2014-04-09T13:59:59.999Z"
}

但我不太确定从哪里开始。

该项目正在使用 moment.js,但如果有使用直接 javascript 日期对象的更简单的解决方案,我都可以接受。

最佳答案

如果没有 moment.js,这可能是一个想法:

//assuming you have an object like
// { start: [a date object], end: [a date object] }
// create a range (getDates.call([the assumend object]);
function getDates() {
var dates = [{date: this.start, day: this.start.getDay()}]
,current = new Date(this.start);
while (current < this.end) {
var next = new Date(current.setDate(current.getDate()+1));
dates.push( {date: current, day: current.getDay()} );
current = next;
}
return dates;
}

// assuming you have a range, check if the range
// contains a full week
// (containsFullweek.call([the range]))
function containsFullweek() {
return this.length>6 &&
this.filter(
function (v) { return v.day == 0 || v.day == 1})
.length>=2;
}

// the sunday after a monday modification
function containsFullweek() {
var mondays = this.range.filter(function (v) { return v.day == 1; })
,nextsundays = this.range.filter(
function(v) {return v.day==0 && v.date>this[0].date}, mondays);
return nextsundays.length>0;
}

解决了这个jsFiddle

换句话来说:创建一个对象数组[范围],其中包含从开始日期到结束日期的所有日期,数组中的每个对象都存储日期和该日期的工作日。通过检查 [范围] 中是否至少有七个日期来检查范围是否包含整周,以及(冗余)范围是否包含星期日 (0) 或星期一 (1)。

关于javascript - 日期范围是否包含两个特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com