2017-06-28 295 views
0

這是我第一次嘗試javascript,並且我一直試圖在我的網站上設置一個實時時鐘,並且我以我想要的方式顯示時間,但是我不能讓它使用超時命令每秒自動刷新一次。我在這裏做錯了什麼?如何在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> 
+1

第一條經驗法則。不要使用'document.write()'。 –

+2

設置javascript函數'setInterval' – ControlAltDel

+0

什麼是'timeout'? – epascarello

回答

0

所以有所謂的setInterval(如已經sheplu說,這個漂亮的JavaScript函數。

所以你幾乎可以除去在onload對象和超時,並使用setInterval。

這看起來像這樣:

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

當然,你將不得不做一些微調,像var格式直接在間隔不是最好的,因爲它不會改變。

看劇本這裏:使用https://jsfiddle.net/cv8wLgux/

網站:MozillaDevW3Schools

0

使用setInterval函數。 https://developer.mozilla.org/fr/docs/Web/API/WindowTimers/setInterval

不確定,應該試試,但我認爲如果你保持打開頁面,你可以每隔幾小時/幾天就釋放一些秒。因此,您應該時間檢查新時間並更新所有內容

+1

它不僅僅是間隔...... – epascarello

+0

是啊我不希望整個頁面刷新,只是日期時間。關於代碼的 – Nanoni

+0

?是的,幾乎所有的事情都需要以另一種方式來完成!但只是給他的功能,使用每X時間調用一次;) 這裏是第二個功能,由他來讀取它,嘗試它並做的東西! (對不起,只是在控制檯輸出結果) https://jsfiddle.net/k2sg8fe1/ – sheplu

1

我使用了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) 
+0

不知道如何使用庫,但會明確地查找它明天,並解決它,並使用此最終版本。 – Nanoni

0

我會做下列方式

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

setInterval("updateTimer()", 500) 

我將有間隔定時器火災每1/2第二次(或更頻繁),因爲給定的時間間隔只是近似的。如果使用1000毫秒,呼叫之間的時間可能在990-1010毫秒(或更寬)
之間的任何地方,並且您可能會在幾秒鐘內丟失或重複該事件。

如果您更頻繁地調用它,則可以將當前時間從Date變量中減去毫秒,然後決定您每次要執行的操作。