如何在 JavaScript 中以 HH:MM:SS 格式显示当前时间?

IT技术 javascript datetime
2021-02-08 06:20:50

如何以 HH:MM:SS 格式显示当前时间?

6个回答

您可以使用本机功能Date.toLocaleTimeString()

var d = new Date();
var n = d.toLocaleTimeString();

这将显示例如:

"11:33:01"

MDN:日期到LocaleTimeString

一行 new Date().toLocaleTimeString()
2021-03-18 06:20:50
我认为,这应该是公认的答案,因为它准确地回答了问题,使用本机函数并且是最短的工作代码来获得所需的内容。
2021-03-19 06:20:50
toLocaleTimeString 不是函数
2021-04-11 06:20:50
下午 3:59:45 是它给我的。那不是请求的格式。
2021-04-12 06:20:50
这完全取决于系统/浏览器设置。有时您会收到“22:11:33”有时“10:11:33 PM”
2021-04-13 06:20:50

function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  // add a zero in front of numbers<10
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
  t = setTimeout(function() {
    startTime()
  }, 500);
}
startTime();
<div id="time"></div>

仅使用 javaScript 的演示

更新

Updated Demo

(function () {
    function checkTime(i) {
        return (i < 10) ? "0" + i : i;
    }

    function startTime() {
        var today = new Date(),
            h = checkTime(today.getHours()),
            m = checkTime(today.getMinutes()),
            s = checkTime(today.getSeconds());
        document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
        t = setTimeout(function () {
            startTime()
        }, 500);
    }
    startTime();
})();

您可以在Javascript.

var time = new Date();
console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds());

目前它返回15:5:18请注意,如果任何值小于 10,它们将仅使用一位而不是两位来显示。

JSFiddle 中检查这个

更新:
对于前缀 0 的尝试

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));
您需要考虑分钟和秒 < 10,正如 Tushar 在他的回答中所做的那样,否则它不会显示前导“0”。
2021-03-14 06:20:50
@CleverGirl 我试图给出简单的答案,所以我写了那个。既然你提到了前缀 0,我想用@user113716 的答案来做这件事,这个答案已经很清楚了。
2021-04-01 06:20:50
是的,但我需要添加三列问题。请阅读先生的问题。我需要在第一列添加时间,在第二列添加实时数据
2021-04-07 06:20:50
同样对于前缀为 0 的尝试,String(date.getMinutes()).padStart(2, "0");如果不是 2 位数字,则会添加 0。
2021-04-11 06:20:50

您可以使用moment.js来执行此操作。

var now = new moment();
console.log(now.format("HH:mm:ss"));

输出:

16:30:03
通过包含 20k+ 脚本隐藏执行此操作所需的 120 多个字节!天才
2021-03-15 06:20:50
谢啦!每个人都让一切变得如此复杂!对于需要为简单的事情快速编写一行代码的人来说,这是最简洁的回答!
2021-03-16 06:20:50
谢谢莱姆斯。我再也不会掉进 js 日期时间操作这个不光彩的兔子洞了。
2021-03-24 06:20:50
嘿,我不是说你应该总是使用它,但如果你已经使用它,为什么不以简单的方式使用它😉
2021-04-06 06:20:50
new Date().toTimeString().slice(0,8)

请注意, toLocaleTimeString() 可能会返回类似9:00:00 AM.

这是我第一次看到有人在没有 new Date() 的情况下制作代码示例实例化日期......使用 (new Date) 是否正常?
2021-04-09 06:20:50