search

Home  >  Q&A  >  body text

javascript - js生成当前日期起,一周内的日期(格式为月份加日)

我想用js生成一个日期数组,长度为一周(7),我应该怎么判断月初月末的情况,比如8.30 8.31 9.1 9.2 9.3 9.4 9.5这样的跨月份的情况以及大小月份的判断?或者有什么第三方组件能实现这个?

PHP中文网PHP中文网2789 days ago811

reply all(2)I'll reply

  • PHP中文网

    PHP中文网2017-04-11 12:42:15

    var result = [];
    var now = new Date();
    Date.prototype.getMonthDay = function(){
        return (this.getMonth() + 1) + '.' + this.getDate();
    }
    result.push(now.getMonthDay());
    for(var i = 0 ; i < 6 ; i ++){
        now.setDate(now.getDate() + 1);
        result.push(now.getMonthDay())
    }

    reply
    0
  • 黄舟

    黄舟2017-04-11 12:42:15

    网上的一个日期格式化的扩展

    Date.prototype.format = function(format) {
        if (!format) {
            format = this.fullPattern || "yyyy-MM-dd HH:mm:ss";
        }
    
        var o = {
            "M+": this.getMonth() + 1, // month
            "d+": this.getDate(), // day
            "H+": this.getHours(), // hour (24)
            "h+": this.getHours() % 12, // hour (12)
            "m+": this.getMinutes(), // minute
            "s+": this.getSeconds(), // second
            "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
            "S": this.getMilliseconds()
        };
    
        if (/(y+)/.test(format)) {
            format = format.replace(RegExp.$1, (this.getFullYear() + "")
                .substr(4 - RegExp.$1.length));
        }
    
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
            }
        }
    
        return format;
    };

    有了这个之后,可以用当天的日期来生成一个数组

    var d = new Date();
    var r = Array.apply(null, new Array(7))
        .map((v, i) => {
            d.setDate(d.getDate() + i);
            return d.format("MMdd");
        });
    
    console.log(r); 

    结果

    [ '0908', '0909', '0911', '0914', '0918', '0923', '0929' ]

    reply
    0
  • Cancelreply