如何在JavaScript中每秒更新DateTime



这是我在JavaScript上的第一次尝试,我一直在尝试在我的网站上设置一个实时时钟,我得到了时钟以显示我想要的时间,但是我无法通过超时命令使其每秒自动化。我在这里做错了什么?

ps。如果某人有一个好主意如何改变UTC时间的时间,那将不胜感激,但是我仍然在为我的自我努力。

谢谢。

<!DOCTYPE html>
<html>
<head>
<script> 
var date=new Date();
var format = "YYYY-MMM-DD DDD";
document.write(dateConvert(date,format));
function dateConvert(dateobj,format){
 var year = dateobj.getFullYear();
 var month= ("0" + (dateobj.getMonth()+1)).slice(-2);
 var date = ("0" + dateobj.getDate()).slice(-2);
 var hours = ("0" + dateobj.getHours()).slice(-2);
 var minutes = ("0" + dateobj.getMinutes()).slice(-2);
 var seconds = ("0" + dateobj.getSeconds()).slice(-2);
 var day = dateobj.getDay();
 var months = ["1","2","3","4","5","6","7","8","9","10","11","12"];
 var converted_date = "";
switch(format){
 case "YYYY-MM-DD":
  converted_date = year + "-" + month + "-" + date;
  break;
case "YYYY-MMM-DD DDD":
  converted_date = year + "-" + months[parseInt(month)-1] + "-" + date
  + " " + hours + ":" + minutes + ":" + seconds;
  break;
}
return converted_date;
}
</script>
</head>
    <body onload="dataConvert()",timeout(dateConverter,1000)>
</body>
</html>

因此,有一个称为setInterval的不错的JavaScript函数(如Sheplu所说的那样。

因此,您几乎可以删除Onload对象和超时并使用SetInterval。

看起来像这样:

setInterval(function(){
  var date = new Date();
  var format = "YYYY-MMM-DD DDD";
  dateConvert(date,format)
}, 1000);

当然,您必须进行一些微调,例如直接在间隔中的var格式,不是最好的,因为它不会改变。

在此处查看脚本:https://jsfiddle.net/cv8wlgux/

使用的站点:Mozilladev,W3Schools

我使用Moment.js库简化了请求。时钟设置为间隔以每1000ms(1秒(更新一次。

setInterval(function(){
  document.getElementById("clock").innerText = moment().format('MMMM Do YYYY, h:mm:ss a');  
},1000)

http://plnkr.co/edit/edkbojuse1a8aytzax7g?p=preview

setInterval(function(){
  document.getElementById("clock").innerText = moment.utc().format('MMMM Do YYYY, h:mm:ss a');
},1000)

我会以以下方式做

function updateTimer() { "put your code to format the output here" }
setInterval("updateTimer()", 500)

我将每1/2秒(或更频繁地(进行一次间隔计时器射击,
因为给定时间间隔仅是近似值。如果您使用1000 ms
呼叫之间的时间可能在990-1010 ms(或更宽(
之间您可能会在几秒钟内丢失或复制活动。

如果您经常打电话给它,则可以将当前时间降至从日期变量开始的毫秒,并确定您每次要做什么。

使用setInterval函数。https://developer.mozilla.org/fr/docs/web/api/windowtimers/setInterval

不确定,应该尝试一下,但是我认为,如果您保持页面打开,则每小时/天可以放一些秒。因此,您应该有时检查新时间并更新所有内容

最新更新