我正在使用highchart plungin进行我的新项目我刚注意到在我的数据数组中,日期必须减少一个月,因为在javascript中月份的开始时间为00(不是01)。我的数组值是这样的(:
var usdeur = [
[Date.UTC(2004, 3, 31), 0],
[Date.UTC(2004, 4, 1), 0.134879956838416],
[Date.UTC(2004, 4, 2), 0.471580293538753],
[Date.UTC(2004, 4, 3), 0.473578515121543],
[Date.UTC(2004, 4, 4), 0.474577625912938],
];
我知道如何为每个日期减去一个月以使图表正常工作?
谢谢你,对不起我糟糕的英语。
答案 0 :(得分:1)
一般情况下,你可以用这样的表达式减去月份:
var d = new Date.UTC(2004, 3, 31);
d.setMonth(d.getMonth()-1);
console.log(d); // Minus one month
使用数组,您可以执行以下操作:
for (var i = 0; i < usdeur.length; i++) {
var date = usdeur[i][0];
date.setMonth(date.getMonth()-1);
usdeur[i][0] = date;
}
答案 1 :(得分:1)
如果您可以更改其生成方式,请改为生成
var usdeur = [
[Date.UTC(2004, 3 - 1, 31), 0],
[Date.UTC(2004, 4 - 1, 1), 0.134879956838416],
[Date.UTC(2004, 4 - 1, 2), 0.471580293538753],
[Date.UTC(2004, 4 - 1, 3), 0.473578515121543],
[Date.UTC(2004, 4 - 1, 4), 0.474577625912938],
];
如果您无法修复生成的代码,则可以在评估之前放置自定义Date.UTC
功能,并在之后撤消。< / p>
(function () {
var utc = Date.UTC, slice = Array.prototype.slice;
Date.UTC = function () { // method to take `1` based months
var args = slice.apply(arguments);
if (args.length > 2) // fix your months
args[1] -= 1;
return utc.apply(Date, args);
};
Date.UTC.restore = function () { // method to undo changes
Date.UTC = utc;
};
}());
// eval your array
// ...
// restore original behaviour
Date.UTC.restore();