2014-01-27 129 views
3

我是比較新的JavaScript,並一直試圖找出一種方法來創建一個時鐘(這需要一點解釋,請與我一起):javascript時鐘轉換實時只有秒

我嘗試創建一個時鐘跟隨實時的JavaScript時鐘,然後計算自午夜以來已經過去了多少秒鐘(此時重置時鐘)。然後我希望能夠定義以毫秒爲單位的秒數,即改變一秒鐘的持續時間。

我的計劃是在24小時內計算200.000「秒」的工作時鐘(如果每個「秒」持續0,432實際秒這將發生)。

任何提示?所有的幫助將不勝感激。

PS。對於那些有興趣的人,我正在寫一篇關於時間理論的論文,我認爲時鐘應該遵循公制,每天應該有20個小時,每個小時應該持續100分鐘,每分鐘應該持續100秒。通過這樣做,時鐘僅僅是一種計時器,從午夜到午夜計數到200.000。

PPS。如果有什麼不清楚的話,我會試着更深入地解釋這一點。

+1

查看[Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)對象和[setInterval](https://developer.mozilla) .org/en-US/docs/Web/API/Window.setInterval)方法。 – A1rPun

+4

好的 - 那你的問題是什麼?您將需要使用[Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)對象獲取當前時間,獲取小時,分鐘和秒,轉換爲秒,然後轉換爲您的格式。使用[setInterval](https://developer.mozilla.org/en-US/docs/Web/API/Window.setInterval)來隨時更新代碼。注意:不要指望'setInterval'是準確的。也就是說,如果你要求它每1000毫秒更新一次,它就會漂移,所以總是通過'Date.now()'獲得實時的時間@ –

+1

@MattBurland Hive mind – A1rPun

回答

2

您希望setInterval函數可以指定每隔432毫秒觸發一次。

secondTimer = window.setInterval(function() { 
    // do stuff in here 
},432); 

正如其他人所說,這不是最準確的計時器,所以你會希望使用Date對象來同步到實際時間。

2

JavaScript中的日期實際上是一個數字,它計算自給定的固定日期以來的毫秒量。所以如果你在Javascript中有任何日期,你可以使用它的getTime方法來查看這個數字。鏈接中的文檔比我在這裏的簡短描述更深入一點。

所以,如果你想看到多少秒的今天0小時和今天之間elaped,現在,你可以使用下面的代碼:

var now = new Date(); // a new Date initialized without parameter defaults to current time 

// Initializing with just year, month and day will set the time of the day to 00:00:00 
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); 

var milisseconds = now.getTime() - today.getTime(); 

現在,所有你需要做的就是劃分milisseconds變量爲1000,您將擁有「英制」秒數。從此,您可以根據需要轉換爲「公制」秒。

這將爲皈依做...現在,獲取JavaScript給定的時間間隔做一些事情,你可以使用全局函數setInterval,像莫德雷德的回答。我在這裏引用,但榮譽和+1對他說:

timer = setInterval(function() { 
    // do stuff in here 
}, 432); // 432 is an arbitrary value, this will fire once every 432 milisseconds. 

做檢查的文件for thatfor SetTimeout

而且正如Matt在這個問題的評論中所說的那樣,Javascript中的計時事件可能並不總是按照您設定的時間間隔準確發射 - 還有其他事情涉及到,您可能會對此做一些研究 - 所以請檢查當前時間通過初始化一個新的Date對象觸發事件。注意:

var x = Date.now(); 

是一個簡寫:

var d = new Date(); 
var x = d.getTime(); 

在JavaScript中日期的工作可能是初學者有點彆扭......做通知,Date對象的一些方法名稱和屬性可能誤導人。月份以0爲基礎,並且getDay將返回星期幾而不是當月,因此請務必閱讀一些文檔。除此之外,祝你好運,快樂的編碼!

+1

他說他的公制「秒」不是實際的秒數,但真正的秒數是.432,這就是爲什麼我將432指定爲間隔時間的原因。 – Mordred

相關問題