【发布时间】:2015-06-22 22:18:33
【问题描述】:
所以在我的主干应用程序 copyCLDRView 中,我尝试复制/粘贴数周(以及底层组件/数据)。或者稍微抽象一点,“将一周和一周中的模型复制到另一周”。
现在我通常想要检查目标周是否至少有一天(从星期一到星期日的目标周)至少有一个组件。为了检查目标周中是否有组件,我有以下日期字符串数组,其中包含所有具有组件的日期:
debug("[copyCLDRView::initialize] -> allDaysWithComponents: ", this.allDaysWithComponents);
例如可以包含以下值(格式为 DDMMYYYY 的日期字符串):
[copyCLDRView::initialize] -> allDaysWithComponents: [“20042015”、“21042015”、“22042015”、“23042015”、“24042015”、“27042015”、“28042015”、“29042015”、“30042015”、 “01052015”、“11052015”、“12052015”、“13052015”、“14052015”、“15052015”、“18052015”、“19052015”、“20052015”、“21052015”、“22050555”、“26012” ”、“27052015”、“28052015”、“29052015”、“01062015”、“02062015”、“03062015”、“04062015”、“05062015”]
现在我必须检查这个数组中的至少一个逻辑日期是否与给定的 Moment.js 对象(进一步称为“时刻”)在同一周,我设法始终是星期一。
paste: function (evt) {
//this.selected is my momentobject, e.g. Mon May 18 2015 00:00:00 GMT+0200
if (this.selected && this.selected !== null) {
//Here I need the check,
//Pseudocode: if weekHasComponent(this.selected, alldaysWIthComponents) ...
this.pasteData(this.selected, this.tmpStorage);
}
},
所以在这个例子中,我选择了从 2015 年 5 月 18 日开始的那一周,现在我希望我的支票在一周中的至少一天中有一个组件时返回“true”=>从上面看,如果数组包含至少一个以下值,它应该返回 true:18052015、19052015、20052015、21052015、22052015
所以我问自己,moment.js 是否可以帮助我进行比较,但我还没有找到任何东西,希望你能提供帮助。
最好的问候, 多米尼克
【问题讨论】:
-
使用Array.some()。
-
您可以使用 moment 调用 week 来检查是否有两天在一年中的同一周,然后比较 year,例如 . moment(date).week() === moment(date2).week() && moment(date).year() === moment(date2).year()。确保为一周设置正确的本地,以便知道它应该从星期一开始,美国的默认值为星期日。
-
@Nit 抱歉,我没听懂,尤其是内置的范围检查。我只是再次查看了文档:/
标签: javascript jquery arrays backbone.js momentjs