亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遍歷出全部的月份

如何遍歷出全部的月份

拉莫斯之舞 2018-10-18 14:18:03
比如說我的是“2017-01”和“2017-05”我想遍歷輸出全部的月份,怎樣寫才能輸出["2017-01","2017-02","2017-03","2017-04","2017-05"]還有就是存在跨年的情況例如“2017-11”和“2018-03”怎樣輸出["2017-11","2017-12","2018-01","2018-02","2018-03"]
查看完整描述

1 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

// 轉換為時間戳

var startTime = new Date("2017-11").getTime();

var endTime = new Date("2018-03").getTime();

// 存放結果

var arr = []

// 最后的格式轉換

var format  = function(time) {

    var date = new Date(time)

    return date.getFullYear() + '-' + (date.getMonth() + 1)

}

// 判斷是否為閏年

var isLeapYear = function(year) {  return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)  }

// 月份映射 假設不為閏年

var MONTH = {

    '1': 31,

    '2': 28,

    '3': 31,

    '4': 30,

    '5': 31,

    '6': 30,

    '7': 31,

    '8': 31,

    '9': 30,

    '10': 31,

    '11': 30,

    '12': 31

}

arr.push("2017-11")

while (startTime < endTime) {

    // 轉換時間格式

    var start = new Date(startTime)

    // 判斷是否為閏年的2月份

    if (isLeapYear(start.getFullYear()) && (start.getMonth() + 1 === 2)) {

        startTime = startTime + 29 * 24 * 60 * 60 * 1000

    } else {

        // 其他情況

        startTime = startTime + MONTH[start.getMonth() + 1] * 24 * 60 * 60 * 1000

    }

    arr.push(format(startTime))

}

arr.push("2018-03")

console.log(arr)


查看完整回答
反對 回復 2018-11-16
  • 1 回答
  • 0 關注
  • 894 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號