在javascript中显示hh:mm:ss.msmsms
我正在学习关于javascript日期对象的W3Schools教程,并尝试以hh:mm:ss.msmsms格式显示时间在javascript中显示hh:mm:ss.msmsms,javascript,node.js,date,Javascript,Node.js,Date,我正在学习关于javascript日期对象的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="myFuncti
<!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>
如何让javascript替换
07:01:01.312
?您必须自己构建有问题的字符串:
x.innerHTML = (d.getHours()+':'+d.getMinutes()+':'+d.getSeconds()+'.'+d.getMilliseconds()).replace(/(^|:)(\d)(?=:|\.)/g, '$10$2');
// result: 07:01:01.312
我们构建字符串(小时、分钟、秒、毫秒),然后运行replace在任何单个数字前面添加一个零
编辑:下面是我在上面的.replace()
中使用的正则表达式的解释:
(^|:)(\d)(?=:|\.)
基本上,它查找(1)字符串的开头或
:
,然后(2)一个位数,然后(3)另一个:
或。然后,它将(1)和(2)替换为匹配的(1),0以及匹配的数字(2)。/g
的意思是“在全球范围内做这件事”。因此,7:1:1.312
变成了07:01:01.312
你尝试过这个库吗“遵循W3C教程”-不,我认识到这种糟糕的代码风格,它肯定来自W3C学校。W3Schools与W3C()完全没有关联。另一方面,MDN有一些相当不错的功能。(只是为了在为时已晚之前拯救灵魂而发表评论)更多关于这个主题,您将需要使用实例方法或momentjs。Date.prototype.toString的输出完全依赖于实现,您将从不同的实现中获得不同的格式。要获得特定格式,除非您希望依赖ES5,否则必须自己完成。但这可能不是你想要的。
(^|:)(\d)(?=:|\.)