【JavaScript】写了一个简单且比较全面的时间、倒计时案例,拿去当公共方法够用(原生js)

刚入门前端(求指导),自己琢磨写了一个跟时间有关的案例,写了三种模式,可以传三种值:

第一种:例: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);

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值