2014-02-24 33 views
2

我正在關注javascript Date對象上的W3Schools教程,並嘗試以hh:mm:ss.msmsms格式顯示時間。在javascript中顯示hh:mm:ss.msmsms

<!DOCTYPE html> 
<html> 
<body> 

<p id="demo">Click the button to display a date after changing the hours, minutes, and seconds.</p> 

<button onclick="myFunction()">Try it</button> 

<script> 
function myFunction() 
{ 
var d = new Date(); 
d.setHours(07,01,01,312); 
var x = document.getElementById("demo"); 
x.innerHTML=d; 
} 
</script> 

</body> 
</html> 

我期待07:01:01.312(如HH:MM:ss.msmsms),但它顯示

Sun Feb 23 2014 07:01:01 GMT-0600 (CST) 

我怎樣才能JavaScript來取代07:01:01.312

+0

您是否嘗試使用這個庫http://momentjs.com/ –

+4

「遵循W3C教程」 - ** NOPE **,我認識到可怕的高質量代碼風格,它肯定來自w3schools。 W3Schools與W3C完全無關(http://w3fools.com/)。另一方面,MDN有一些非常體面的[教程](https://developer.mozilla.org/en-US/docs/Web/Tutorials)。 (只是評論希望在太遲之前拯救靈魂) –

+0

更多關於主題,您將需要使用[日期](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Date_instances)實例方法或者momentjs。 –

回答

6

你必須建立自己的字符串中的問題:

x.innerHTML = (d.getHours()+':'+d.getMinutes()+':'+d.getSeconds()+'.'+d.getMilliseconds()).replace(/(^|:)(\d)(?=:|\.)/g, '$10$2'); 
// result: 07:01:01.312 

我們建立字符串(小時,分,秒,毫秒),然後運行替換在任何孤單數字前加上一個零。

編輯:這是我在.replace()使用上述正則表達式的解釋:

(^|:)(\d)(?=:|\.) 

Regular expression visualization

Debuggex Demo

基本上,它看起來爲(1)任一的開始(2)一個數字,然後(3)另一個:.。然後用匹配的(1),0和匹配的數字(2)替換(1)和(2)。 /g的意思是「在全球範圍內做這件事」。所以,7:1:1.312變成07:01:01.312

+0

+1最好的解決方案! – Warlock