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)