Javascript 午夜倒计时,每天刷新

Javascript 午夜倒计时,每天刷新,javascript,html,css,Javascript,Html,Css,我有这个倒计时脚本,它是一个简单的倒计时 我需要更新此倒计时以运行到一天中的晚上,因此当用户在不同时间访问时,将计算倒计时到午夜,并每天刷新 我能这样做吗 var timeInMinutes=1440; var currentTime=Date.parse(new Date()); var截止日期=新日期(currentTime+timeInMinutes*60*1000); 函数getTimeRemaining(endtime){ var t=Date.parse(endtime)-Date

我有这个倒计时脚本,它是一个简单的倒计时


我需要更新此倒计时以运行到一天中的晚上,因此当用户在不同时间访问时,将计算倒计时到午夜,并每天刷新

我能这样做吗

var timeInMinutes=1440;
var currentTime=Date.parse(new Date());
var截止日期=新日期(currentTime+timeInMinutes*60*1000);
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
返回{
“总计”:t,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(id,endtime){
var clock=document.getElementById(id);
var minutesSpan=clock.querySelector('.minutes');
var secondsSpan=clock.querySelector('.seconds');
函数updatelock(){
var t=GetTime剩余时间(endtime);
minuteSpan.innerHTML=('0'+t.minutes).slice(-2);
secondsSpan.innerHTML=('0'+t.seconds).slice(-2);

如果(t.total首先,您需要计算剩余时间:

let nextMidnight = new Date();
nextMidnight.setHours(24,0,0,0);

let now = new Date();

let remainingTimeInSeconds = (nextMidnight.getTime() - now.getTime())/1000;
之后,需要显示时间:

const hours = Math.floor(rest/3600);
rest = rest-(hours*3600);
const minutes = Math.floor(rest/60);
rest = rest-(minutes*60);
const seconds = Math.floor(rest);

console.log(hours, ':', ("0" + minutes).slice(-2), ':', ("0" + seconds).slice(-2));
我最终优化了代码,以避免每次计算午夜,并支持多次显示,而无需每次重新计算

const倒计时=(()=>{
让nextMidnight=新日期();
下一个午夜。设定小时数(24,0,0,0);
const getRemainingTime=()=>{
让我们现在=新日期();
让时间=(nextMidnight.getTime()-now.getTime())/1000;
如果(时间<0){
nextMidnight=新日期();
下一个午夜。设定小时数(24,0,0,0);
返回getRemainingTime();
}
返回时间;
}
常量解析时间=(时间)=>{
常数小时=数学楼层(时间/3600);
休息=时间-(小时*3600);
常数分钟=数学楼层(休息/60);
休息=休息-(分钟*60);
常数秒=数学地板(剩余);
常量毫秒=(休息秒)*1000;
返回[小时、分钟、秒、毫秒];
};
const formatTime=(parsedTime)=>{
返回“”+parsedTime[0]+':'+(“0”+parsedTime[1]).slice(-2)+':'+(“0”+parsedTime[2]).slice(-2)+';
};
常数els=[];
让超时;
返回(el)=>{
推(el);
如果(!超时){
常数刷新=()=>{
const parsedTime=parseTime(getRemainingTime());
const formattedTimes=formatTime(parsedTime);
for(设i=0,iend=els.length;i{
刷新();
},parsedTime[3]);
};
刷新();
}
else el.innerHTML=formatTime(parseTime(getRemainingTime());
};
})();
倒计时(document.getElementById(“倒计时”);
倒计时(document.getElementById('Countdown-two');
。出发{
字号:1.5em;
}
#倒计时{
填充物:5px;
边框:1px纯黑;
显示:内联块;
填充:14px;
边界半径:5px;
}
.出发#倒计时。span{
显示:内联块;
}
.出发.小时.出发.分钟.出发.秒{
颜色:#fff;
背景:#000;
背景:线性梯度(到顶部,#444 0%,#444 50%,#000 50%,#000 100%);
边界半径:6px;
填充:10px;
字体系列:arial;
}
.出发.hSep、.出发.mSep{
填充物:5px;
}


您将截止日期设置为当前时间加上24小时。这是一个问题,因为您只想计算到午夜。 第二天午夜的日期您可以获取当前日期和时间,并添加24小时以获取第二天。使用


dat.setHours(0,0,0);
这是我的解决方案,应该满足您的所有要求:

var div=document.getElementById(“bb”);
setInterval(函数(){
var toDate=新日期();
var明天=新日期();
明天。设定时间(24,0,0,0);
var diffMS=tomory.getTime()/1000 toDate.getTime()/1000;
var diffHr=数学楼层(diffMS/3600);
diffMS=diffMS-diffHr*3600;
var diffMi=数学楼层(diffMS/60);
diffMS=diffMS-diffMi*60;
var diffS=数学楼层(diffMS);

var结果=((Diffhr这太宽泛了。您没有指定确切的问题。您的代码中是否存在异常,或者您是否遇到意外行为?这直到一天的午夜才起作用,这只是一个24小时倒计时。我需要更新此倒计时以运行到一天的晚上,因此当用户在不同时间访问时,将计算e倒计时到午夜。现在
window.reload()
计数器工作时,显示“6:54:5”而不是“6:54:05”;)