如何用Javascript在午夜或基本上在新的一天更新当前日期

如何用Javascript在午夜或基本上在新的一天更新当前日期,javascript,html,Javascript,Html,因此,我有网络手表什么应该工作24/7。它显示数字时间和当前日期。没有别的了 我的问题是,当时间超过午夜时,当天不会更新,我需要重新启动整个应用程序 我试图为showDate()函数添加setTimeout,但没有帮助。我在考虑在数日内移动+1。还有更有效的吗 function showdate(){ var date = new Date(); var day = date.getDay(); var name = ["Sunday","Monday","Tuesd

因此,我有网络手表什么应该工作24/7。它显示数字时间和当前日期。没有别的了

我的问题是,当时间超过午夜时,当天不会更新,我需要重新启动整个应用程序

我试图为showDate()函数添加setTimeout,但没有帮助。我在考虑在数日内移动+1。还有更有效的吗

function showdate(){

    var date = new Date();
    var day = date.getDay();

    var name = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][day];

    document.getElementById("date").textContent = name;

}

showdate();

function showTime(){
    var date = new Date();
    var h = date.getHours(); // 0 - 23
    var m = date.getMinutes(); // 0 - 59
    var s = date.getSeconds(); // 0 - 59
    var session = "AM";

    if(h === 0){
        h = 24;
    }

    /*if(h > 12){
        h = h - 12;
        session = "PM";
    }*/

    h = (h < 10) ? "0" + h : h;
    m = (m < 10) ? "0" + m : m;
    s = (s < 10) ? "0" + s : s;

    var time = h + ":" + m + ":" + s;
    /*var sess = session;*/
    document.getElementById("MyClockDisplay").innerText = time;
    document.getElementById("MyClockDisplay").textContent = time;
   /* document.getElementById("PM").textContent = sess;*/

    setTimeout(showTime, 1000);     

   }

showTime();
函数showdate(){
变量日期=新日期();
var day=date.getDay();
var名称=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”][日期];
document.getElementById(“日期”).textContent=名称;
}
showdate();
函数showTime(){
变量日期=新日期();
var h=date.getHours();//0-23
var m=date.getMinutes();//0-59
var s=date.getSeconds();//0-59
var session=“AM”;
如果(h==0){
h=24;
}
/*如果(h>12){
h=h-12;
session=“PM”;
}*/
h=(h<10)-“0”+h:h;
m=(m<10)-“0”+m:m;
s=(s<10)?“0”+s:s;
变量时间=h+“:”+m+“:”+s;
/*var-sess=会话*/
document.getElementById(“MyClockDisplay”).innerText=时间;
document.getElementById(“MyClockDisplay”).textContent=时间;
/*document.getElementById(“PM”).textContent=sess*/
设置超时(显示时间,1000);
}
showTime();

谢谢你的建议。

你的代码不会自动执行。你应该定期这样称呼它:

function showdate(){

    var date = new Date();

    var day = date.getDay();

    var name = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][day];

    document.getElementById("date").textContent = name;

        console.log('show date');
}

setInterval(showdate, 1000)
这样,客户端将每秒获取一次新日期(其中
1000
以毫秒为单位)。但是,您可以将时间更改为适合您需要的任何值(请记住,它在
ms

你也可以看看。

函数showdate(){
变量日期=新日期();
var day=date.getDay();
var名称=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”][日期];
document.getElementById(“日期”).textContent=名称;
console.log(“显示日期”);
}
设置间隔(显示日期,1000)
功能检查时间(i){
如果(i<10){
i=“0”+i;
}
返回i;
}
函数startTime(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
//在数字前面加一个零你可以做:

//每天12点显示日期
函数showdateEveryDayAt12(){
setInterval(函数(){
showdate();
}, 86400000);
}
//在下一个12点显示日期,并调用showdateEveryDayAt12()
函数showdateAtNext12(){
var now=新日期();
var millissecondsto12=新日期(now.getFullYear(),now.getMonth(),now.getDate(),12,0,0)-now;
setTimeout(函数(){
showdate();
showdateEveryDayAt12();
},毫秒至12);
}
//放映日期
函数showdate(){
变量日期=新日期();
var day=date.getDay();
var名称=[“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”][日期];
document.getElementById(“日期”).textContent=名称;
}
//现在显示日期,下一个12点显示日期,每天12点显示日期
showdate();
showdateAtNext12();

为什么不定期重新运行
showdate
?@VLAZ不应该设置setInterval/setTimetout吗?重新运行是什么意思?@Cabry您会使用setInterval而不是setTimeout,间隔为1000显示当前时间?时间更新功能在setInterval中吗?您需要检查这个函数的答案
showdateAtNext12()
将在下一个
12
执行。这将调用函数
showdateEveryDayAt12()
很抱歉我的混淆,但是当我将12个值更改为24以使用24小时格式时,它将在下一个24小时执行,对吗?是的,这是我们的理想选择。@Cabry很乐意提供帮助。@Cabry