如何根据当日时间设置判断条件实现日历日期自动切换
问题原因
你现有逻辑的判断条件写的有问题,hoursNow > 17 && minutesNow > 30要求两个条件同时满足,会出现两个异常:
- 18:00~18:29区间:小时满足大于17,但分钟不足30,不会触发加1天
- 19:00~次日17:59区间里,所有小时大于18但分钟小于30的时间(比如19:20、20:15等),也会因为分钟不满足条件不会触发,完全不符合你18:30后生效的需求
另外你计算小时用的是UTC时间偏移得到莫斯科时间,但分钟取的是运行环境的本地分钟,二者时区不统一,非莫斯科时区运行时会出现时间偏差。
修正后代码
JS 代码
let date = new Date(); // 统一用UTC时间计算莫斯科(UTC+3)的时分,避免时区不一致问题,加3后取模24处理小时溢出 let hoursNow = (date.getUTCHours() + 3) % 24; let minutesNow = date.getUTCMinutes(); // 正确判断逻辑:19点及以后 或 18点且分钟≥30 if (hoursNow > 18 || (hoursNow === 18 && minutesNow >= 30)) { date.setDate(date.getDate() + 1); } // 俄文月份配置 const month=["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]; document.querySelector('.text_block').innerHTML = date.getDate() + ' ' + month[date.getMonth()];
HTML 代码
<div class="text_block"></div>
内容的提问来源于stack exchange,提问作者Александр Сорокин
相关产品推荐
相关产品推荐

