Javascript 如何使用jQuery从Date.UTC数组中的每个月减去一个月

Javascript 如何使用jQuery从Date.UTC数组中的每个月减去一个月,javascript,jquery,highcharts,utc,Javascript,Jquery,Highcharts,Utc,我在我的新项目中使用highchart plungin,我刚刚注意到,在我的数据数组中,日期必须少一个月,因为在javascript中,月份从00开始(而不是01)。我的数组的值如下(: 你知道我怎样才能为每个日期减去一个月,使图表运行良好吗 谢谢你,很抱歉我的英语很糟糕。一般来说,你可以用这样的表达方式减去月份: var d = new Date.UTC(2004, 3, 31); d.setMonth(d.getMonth()-1); console.log(d); // Minus one

我在我的新项目中使用highchart plungin,我刚刚注意到,在我的数据数组中,日期必须少一个月,因为在javascript中,月份从00开始(而不是01)。我的数组的值如下(:

你知道我怎样才能为每个日期减去一个月,使图表运行良好吗


谢谢你,很抱歉我的英语很糟糕。

一般来说,你可以用这样的表达方式减去月份:

var d = new Date.UTC(2004, 3, 31);
d.setMonth(d.getMonth()-1);
console.log(d); // Minus one month
使用array,您可以执行以下操作:

for (var i = 0; i < usdeur.length; i++) {
    var date = usdeur[i][0];
    date.setMonth(date.getMonth()-1);
    usdeur[i][0] = date;
}
for(变量i=0;i
如果您可以更改它的生成方式,请改为生成它

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
函数,然后撤消该函数

(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();

生成数组时不能这样做吗?月份有不同的长度,例如,如果您想要“3月31日”,则变为5月1日(
=
4月31日),减去一个月,则是4月1日,而不是3月。请参阅我在数组中对
x,3,31
Paul S.的评论(取自我的数据库)所有的日期都很好,但javascript无法理解我的日期。UTC(2004,3,31);是4月31日。我的问题是我不知道如何为数组中的每个元素使用代码Alexander。这就是你需要的吗?嗨,请回答。这正是我需要的。顺便说一句,真正的问题是字符串的顺序不正确。
(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();