var date = new Date() var seperator1 = '-' var y = date.getFullYear() var m = date.getMonth() + 1 var d = date.getDate() var h = date.getHours() // 當前小時 var arr31 = [1, 3, 5, 7, 8, 10, 12] function getTime(y, m, d, h) { // 先判斷開始日期 if (h < 23) { // 狀況一 未到23點 h++ } else { // 到23點 時間歸0 h = 0 // 先判斷是不是最後一天 if (arr31.indexOf(m) !== -1) { // 本月有31天 if (d < 31) { d++ } else { d = 1 if (m < 12) { m++ } else { m = 1 y++ } } } else if (m === 2) { // 2月判斷是不是閏年 if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0 ) { // 是閏年 本月有29天 if (d < 29) { d++ } else { d = 1 m++ } } else { // 不是閏年 本月有28天 if (d < 28) { d++ } else { d = 1 m++ } } } else { // 本月有30天 if (d < 30) { d++ } else { d = 1 m++ } } } var obj = { str: y + '-' + check(m) + '-' + check(d) + ' ' + check(h) + ':00', y : y, m: m, d: d, h: h } return obj } function check (num) { // 不滿10加0 return num < 10 ? ('0'+num) : num } // var obj = getTime(y, 4, 30, 22) // 測試30天 // var obj = getTime(y, 12, 31, 22) // 測試31天 // var obj = getTime(y, 2, 28, 22) // 測試平年2月 // var obj = getTime(2020, 2, 28, 22) // 測試潤年2月 // var obj = getTime(2020, 2, 29, 22) // 測試潤年2月 var obj = getTime(y, m, d, h) // 當前日期 // obj.str 是加一個小時 // getTime(obj.y, obj.m, obj.d, obj.h).str 是加兩個小時 console.log(obj.str + ' ~ ' + getTime(obj.y, obj.m, obj.d, obj.h).str)