在javascript中显示hh:mm:ss.msmsms

Pol*_*uin 2 javascript date node.js

我正在关注javascript Date对象的W3Schools教程,并尝试以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>
Run Code Online (Sandbox Code Playgroud)

我期待07:01:01.312(如hh:mm:ss.msmsms),但它显示

Sun Feb 23 2014 07:01:01 GMT-0600 (CST)
Run Code Online (Sandbox Code Playgroud)

我怎样才能让javascript取代07:01:01.312

eli*_*ide 6

你必须自己构建有问题的字符串:

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

我们构建字符串(小时,分钟,秒,毫秒),然后运行替换以在任何单个数字前面添加零.

编辑:这是我在.replace()上面使用的正则表达式的解释:

(^|:)(\d)(?=:|\.)
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

基本上,它寻找(1)字符串的开头或a :,然后(2)单个数字,然后(3)另一个:或a ..然后用任何匹配的(1)0,和匹配(2)的数字替换(1)和(2).的/g意思是"在全球做到这一点." 所以,7:1:1.312成为07:01:01.312.