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

How to subtract one month from each month in a Date.UTC Array with jQuery

本文关键字:一个 jQuery 何使用 Date UTC 数组      更新时间:2023-09-26

我正在为我的新项目使用 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],
];

知道如何为每个日期减去一个月以使图表正常工作的任何想法?

谢谢你,对不起我的英语很糟糕。

如果可以更改其生成方式,请改为生成此内容

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();
一般来说,

你可以用这样的表达式减去月份:

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;
}