如果这看起来像是一个愚蠢的问题,我提前道歉,但我以前从未使用过Moment.js。
我有以下方法(从以前的开发人员继承的代码(,并且无法理解为什么评估不起作用。我相信这是微不足道的事情。
注意:只有if
语句中>= weekOne
的日期才能计算正确的日期。即使日期匹配,其他else if
子句也不会计算。
var myObject = $scope.uptimeData;
var uptimeTotal = [];
if (myObject) {
var weekOne = moment().subtract(7, "days").format("YYYY-MM-DD");
var weekTwo = moment().subtract(14, "days").format("YYYY-MM-DD");
var weekThree = moment().subtract(21, "days").format("YYYY-MM-DD");
var weekFour = moment().subtract(28, "days").format("YYYY-MM-DD");
var weekFive = moment().subtract(35, "days").format("YYYY-MM-DD");
var weekSix = moment().subtract(42, "days").format("YYYY-MM-DD");
var weekSeven = moment().subtract(49, "days").format("YYYY-MM-DD");
var weekOneTotalSuccess = 0;
var weekTwoTotalSuccess = 0;
var weekThreeTotalSuccess = 0;
var weekFourTotalSuccess = 0;
var weekFiveTotalSuccess = 0;
var weekSixTotalSuccess = 0;
var weekOneTotalFail = 0;
var weekTwoTotalFail = 0;
var weekThreeTotalFail = 0;
var weekFourTotalFail = 0;
var weekFiveTotalFail = 0;
var weekSixTotalFail = 0;
Object.keys(myObject).map(function (key, index) {
if (myObject[key].successes) {
if (key >= weekOne) {
weekOneTotalSuccess = weekOneTotalSuccess + myObject[key].successes;
} else if (key >= weekTwo && key < weekThree) {
weekTwoTotalSuccess = weekTwoTotalSuccess + myObject[key].successes;
} else if (key >= weekThree && key < weekFour) {
weekThreeTotalSuccess = weekThreeTotalSuccess + myObject[key].successes;
} else if (key >= weekFour && key < weekFive) {
weekFourTotalSuccess = weekFourTotalSuccess + myObject[key].successes;
} else if (key >= weekFive && key < weekSix) {
weekFiveTotalSuccess = weekFiveTotalSuccess + myObject[key].successes;
} else if (key >= weekSix && key < weekSeven) {
weekSixTotalSuccess = weekSixTotalSuccess + myObject[key].successes;
}
else {
}
}
}
}
下面是一个数据示例:
"2017-05-03": {
"failures": 816,
"successes": 18378
},
"2017-05-04": {
"failures": 1067,
"successes": 22302
},
"2017-05-05": {
"failures": 1008,
"successes": 82599
},
"2017-05-07": {
"failures": 2724,
"successes": 142854
},
"2017-05-08": {
"failures": 1329,
"successes": 149028
}
问题
您正在比较两个字符串。 例如,在第一次迭代时,您的值为:
key => "2017-05-03"
weekOne => moment().subtract(7, "days").format("YYYY-MM-DD"); /* which returns a formatted string */
>
和<
运算符实际上注定不会与字符串类型变量一起使用。
注意:在进行比较之前,这些运算符中的每一个都会在每个操作数上调用 valueOf(( 函数。
答
只要你使用的是 Moment.js,你就应该参考 MomentJS 查询文档部分,以比较一个日期是早于还是晚于另一个日期。