Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个给定日期之间的年份列表或数组_Javascript_Jquery - Fatal编程技术网

Javascript 两个给定日期之间的年份列表或数组

Javascript 两个给定日期之间的年份列表或数组,javascript,jquery,Javascript,Jquery,我有两个MMM yyyy格式的日期。2013年6月和2015年5月前。我需要两个日期之间的年份列表或数组。上述日期:201320142015。如何在javascript或JQuery中实现这一点?提前感谢。如果您在项目中负担得起的话,moment library非常擅长处理日期 见: 要返回两个日期之间的年数差,然后只需增加起始年份的年数,并将新数字推送到一个数组中?试试这个 var d = new Date( "01 " + "July 2013"); first = d.g

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

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

见:

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

试试这个

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

如果您知道输入值将始终采用MMM yyyy格式,则无需转换为实际的日期对象,您只需使用提取所需的部分即可。但它将以字符串的形式返回,因此要对其进行数学运算,您需要将其转换为数字-一种方法是使用。

您尝试过什么吗?一个简单的循环就可以做到这一点。只需在parseIntX.substr4,4,10之间循环,就可以为开始数据和结束日期创建日期对象,然后从中循环创建和数组。您尝试过什么?您的示例与指定的MMM yyyy格式不匹配—它们没有连字符。在你寻求帮助之前,你至少需要在你自己的头脑中弄清楚这个要求。亲爱的Bergi,如果这是一个简单的循环,你能展示它然后投票吗???我想要他们之间的时间序列。对于上述ex,输出值应该类似于201320142015201620172018。@Akram-这就是这个答案的作用。arr将为[2013年、2014年、2015年、2016年、2017年、2018年]。您需要差异做什么?你可以开始增加年数……对这样一个问题付出太多的努力:-+1无论如何只需要3个变量就可以做到:-+1无论如何+1,即使jQuery不够。
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);
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]
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;

};