-3

我有 2 个 MMM yyyy 格式的日期。前 2013 年 6 月和 2015 年 5 月。我需要两个日期之间的年份列表或数组。以上日期:2013、2014、2015。如何在 javascript 或 JQuery 中实现这一点?提前致谢。

4

5 回答 5

6

尝试这个..

    var d = new Date( "01 " + "July 2013");
    first = d.getFullYear();

    var s = new Date( "01 " + "May 2018");
    second = s.getFullYear();
    arr = Array();

   for(i = first; i <= second; i++) arr.push(i);


   alert(arr);
于 2013-07-16T12:39:36.633 回答
2
var startDate = "JUN 2013",
    endDate = "MAY 2015";

var result = [];
for (var from=+startDate.slice(4),to=+endDate.slice(4); from<=to; from++)
    result.push(from);

console.log(result); // Array [2013, 2014, 2015]
于 2013-07-16T12:46:49.930 回答
1
var date1 = "JUN 2013";
var date2 = "MAY 2015";
// get the year parts, and convert from strings to numbers:
var year1 = Number(date1.substr(4));
var year2 = Number(date2.substr(4));
// create an empty array:
var yearList = [];
// loop between the two years:
for (var i = year1; i <= year2; i++) {
    // add to array:
    yearList.push(i);
}
// print list of years to the console:
console.log(yearList);

如果您知道您的输入值将始终采用MMM yyyy格式,则无需转换为实际Date对象,您可以使用该String方法.substr()提取您需要的部分。但它会将其作为字符串返回,因此要对其进行数学运算,您需要将其转换为数字 - 一种方法是使用Number()method

于 2013-07-16T12:45:12.893 回答
0
var getArrayOfYears = function(date1 /* MMM YYYY */, date2 /* MMM YYYY */) {

    var arrayOfYears = [];

    // Get the years
    date1 = parseInt(date1.substring(4), 10);
    date2 = parseInt(date2.substring(4), 10);

    // Order the years
    if (date2 > date1) {
        var tmp = date2;
        date2 = date1;
        date1 = tmp;
    }

    // Loop them
    var dif = date1 - date2;
    for (var i = 0; i <= dif; i++) {
        arrayOfYears[arrayOfYears.length] = date1 - i;
    }

    return arrayOfYears;

};
于 2013-07-16T13:00:35.833 回答
0

如果您在项目中负担得起,moment 库非常擅长处理日期。

请参阅: http: //momentjs.com/docs/#/displaying/difference/

要返回两个日期之间的年数差异,然后您可以增加起始年份并将新数字推送到数组中?

于 2013-07-16T12:35:21.967 回答