search

Home  >  Q&A  >  body text

javascript - js对Date对象的操作的问题。

使用JavaScript生成一个倒数7天的数组。
比如今天是10月1号,生成的数组是["9月25号","9月26号","9月27号","9月28号","9月29号","9月30号","10月1号"]。
这个难点就是需要判断这个月份(可能还需要上一个月份)是30天还是31天,而且还有瑞年的2月28天或者29天。

PHP中文网PHP中文网2822 days ago367

reply all(2)I'll reply

  • 迷茫

    迷茫2017-04-10 15:57:17

    这个不复杂,Date 的 setDate() 可以给 0 和负数作为参数,日期会自动计算

    var today = new Date();
    var dates = [today];
    
    for (var i = 1; i < 7; i++) {
        var d = new Date(today);
        d.setDate(d.getDate() - i);
        dates.unshift(d);
    }
    
    console.log(dates);
    [Fri Sep 25 2015 09:58:23 GMT+0800 (中国标准时间),
     Sat Sep 26 2015 09:58:23 GMT+0800 (中国标准时间),
     Sun Sep 27 2015 09:58:23 GMT+0800 (中国标准时间),
     Mon Sep 28 2015 09:58:23 GMT+0800 (中国标准时间),
     Tue Sep 29 2015 09:58:23 GMT+0800 (中国标准时间),
     Wed Sep 30 2015 09:58:23 GMT+0800 (中国标准时间),
     Thu Oct 01 2015 09:58:23 GMT+0800 (中国标准时间)]

    如果要取得格式化后的日期

    var today = new Date();
    var dates = [today];
    
    for (var i = 1; i < 7; i++) {
        var d = new Date(today);
        d.setDate(d.getDate() - i);
        dates.unshift(d);
    }
    
    dates = dates.map(function(d) {
        return (d.getMonth() + 1) + "月" + d.getDate() + "日";
    });
    
    console.log(dates);
    ["9月25日",
     "9月26日",
     "9月27日",
     "9月28日",
     "9月29日",
     "9月30日",
     "10月1日"]

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:57:17

    不需要那么复杂,在js中非常简单,因为jsdate对象是可以参与数学运算的!!!看下面的代码:

    var now = new Date('2012/3/2 12:00:00'); // 这个算法能自动处理闰年和非闰年。2012年是闰年,所以2月有29号
    var s = '';
    var i = 0;
    while (i < 7) {
        s += now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate() + '\n';
        now = new Date(now - 24 * 60 * 60 * 1000); // 这个是关键!!!减去一天的毫秒数效果就是把日期往前推一天
        i++;
    }
    
    alert(s);

    reply
    0
  • Cancelreply