刚入门前端(求指导),自己琢磨写了一个跟时间有关的案例,写了三种模式,可以传三种值:
第一种:例:getDowmtime('2023-06-20 18:00:00','2023-07-01 18:00:00');
结果就是:
第二种:例:getDowmtime('2023-07-01 18:00:00','2023-06-20 18:00:00');//其实就是反过来
结果就是:
第三种:例:getDowmtime('2023-07-01 18:00:00');//只有一个开始时间
结果就是:
第三种:例:getDowmtime('null','2023-07-01 18:00:00');//只有一个开始时间为null,有个结束时间
结果就是:
应该还有很多种,大佬们可以帮我改改,看看还有啥功能可以加进去的或者这个方法优化
期望得到大家意见和指导~~
下面代码奉上:
//倒计时
function getDowmtime(InputStarttime, InputEndtime = '') {//结束时间默认为空
//判断闰年 平年
// undefined
//获取对应时间戳
var starttime = +new Date(InputStarttime);
var endtime = +new Date(InputEndtime);
var nowtime = +new Date();
//如果开始时间为空参(不存在) 则直接返回现在时间
if (!InputStarttime && !InputEndtime) {
let dayArrs = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var getHours = new Date().getHours();
var getMonth = new Date().getMonth() + 1;
return '现在是:' + new Date().getFullYear() + '年' + getMonth + '月' + new Date().getDate() + '日' + '\t' + (getHours >= 00 && getHours <= 06 ? '凌晨' : getHours <= 12 && getHours > 06 ? '早上' : '下午') + getHours + '时' + new Date().getMinutes() + '分' + new Date().getSeconds() + '秒' + '\t' + dayArrs[new Date().getDay()];
}
// console.log(starttime);
//验证时间是否可以被转换 false直接返回undefined
if (isNaN(starttime) || (isNaN(endtime) && InputEndtime != '')) {
return undefined;
}
//距离总秒
var time = ((InputEndtime == '' || InputEndtime == null ? nowtime : endtime) - (InputStarttime == '' || InputStarttime == null ? nowtime : starttime)) / 1000;
//计算 年
var year = Math.abs(Math.floor(time / 60 / 60 / 24 / 365));
//判断年份是否相同 相同直接为0
if (new Date().getFullYear(new Date().setFullYear(starttime)) == new Date().getFullYear(new Date().setFullYear(endtime))) {
year = 0;
}
year = year < 10 && year >= 0 ? '0' + year : year;
//计算 天
var day = Math.abs(Math.floor(time / 60 / 60 / 24 % 365));
day = day < 10 && day >= 0 ? '0' + day : day;
//计算 小时
var hours = Math.abs(Math.floor(time / 60 / 60 % 24));
hours = hours < 10 && hours >= 0 ? '0' + hours : hours;
//计算 分钟
var minute = Math.abs(Math.floor(time / 60 % 60));
minute = minute < 10 && minute >= 0 ? '0' + minute : minute;
//计算 秒
var secound = Math.abs(Math.floor(time % 60));
secound = secound < 10 && secound >= 0 ? '0' + secound : secound;
//如果开始时间 大于现在时间 或者 开始时间大于结束时间
if (starttime > endtime) {
return new Date(starttime) + '距离' + (InputEndtime == '' || InputEndtime == null ? '现在' : new Date(endtime)) + '已经过了:' + year + '年 ' + day + '天 ' + hours + '小时 ' + minute + '分钟 ' + secound + '秒 ';
} else if (starttime > nowtime) {
return new Date(starttime) + '距离现在已经过了:' + year + '年 ' + day + '天 ' + hours + '小时 ' + minute + '分钟 ' + secound + '秒 ';
}
var returnData_one = (InputEndtime == '' || InputEndtime == null ? '现在' : new Date(endtime)) + '距离' + new Date(starttime) + '已经过了:' + year + '年 ' + day + '天 ' + hours + '小时 ' + minute + '分钟 ' + secound + '秒 ';
var returnData_two = (starttime == nowtime || InputStarttime == null ? '现在' : new Date(starttime)) + '距离' + (endtime == starttime || InputEndtime == '' ? '现在' : new Date(endtime)) + '还有:' + year + '年 ' + day + '天 ' + hours + '小时 ' + minute + '分钟 ' + secound + '秒 ';
//拼接返回对应值
return InputEndtime == '' || endtime <= starttime ? returnData_one : returnData_two;
}
// console.log(getDowmtime());
setIn = setInterval(() => {
var logtime = getDowmtime();
if (logtime === undefined) {
clearInterval(setIn);
console.log(undefined);
return;
}
console.log(logtime);
}, 1000);