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

use*_*752 78 javascript datetime date

你能告诉我如何设置这种格式的时间HH:MM:SS.我想在div中设置这个吗?

Tus*_*har 89

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();
Run Code Online (Sandbox Code Playgroud)
<div id="time"></div>
Run Code Online (Sandbox Code Playgroud)

DEMO仅使用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();
})();
Run Code Online (Sandbox Code Playgroud)


pst*_*ryk 82

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

var d = new Date();
var n = d.toLocaleTimeString();
Run Code Online (Sandbox Code Playgroud)

这将显示例如:

"11:33:01"
Run Code Online (Sandbox Code Playgroud)

我在http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp上找到了它

  • 这完全取决于系统/浏览器设置。有时你会得到“22:11:33”,有时会得到“10:11:33 PM” (8认同)
  • 它是我给它的3:59:45 PM.这不是所要求的格式. (6认同)
  • 我认为,这应该是公认的答案,因为它完全回答了问题,使用原生函数,并且是获得要求的最短工作代码. (4认同)
  • 在一行 `new Date().toLocaleTimeString()` (3认同)

Pra*_*een 52

你可以这样做Javascript.

var time = new Date();
console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds());
Run Code Online (Sandbox Code Playgroud)

目前它返回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));
Run Code Online (Sandbox Code Playgroud)


bra*_*ipt 34

你可以使用moment.js来做到这一点.

var now = new moment();
console.log(now.format("HH:mm:ss"));
Run Code Online (Sandbox Code Playgroud)

输出:

16:30:03
Run Code Online (Sandbox Code Playgroud)

  • 通过包含20k +脚本隐藏120多个字节来完成此操作!天才 (5认同)
  • 谢谢remus.我永远不会再次陷入日期时间操纵的不光彩的兔子洞. (3认同)

小智 21

new Date().toTimeString().slice(0,8)
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我第一次看到有人在没有 new Date() 的情况下编写实例化日期的代码示例...使用 (new Date) 正常吗? (2认同)

小智 9

使用这种方式:

var d = new Date();
localtime = d.toLocaleTimeString('en-US', { hour12: false });
Run Code Online (Sandbox Code Playgroud)

结果:18:56:31


Vad*_*aka 5

function realtime() {
  
  let time = moment().format('h:mm:ss a');
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('h:mm:ss a');
    document.getElementById('time').innerHTML = time;
  }, 1000)
}

realtime();
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>
Run Code Online (Sandbox Code Playgroud)

使用moment.jssetInterval 的非常简单的方法。

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)
Run Code Online (Sandbox Code Playgroud)

样本输出

使用setInterval()设置为 1000ms 或 1 秒,输出将每 1 秒刷新一次。

下午 3:25:50

这就是我在我的一个业余项目中使用这种方法的方式。

setInterval(() => {
  this.time = this.shared.time;
}, 1000)
Run Code Online (Sandbox Code Playgroud)

也许您想知道使用是否setInterval()会导致一些性能问题。

setInterval 是否占用 CPU 资源?

我不认为 setInterval 本质上会导致严重的性能问题。我怀疑这种声誉可能来自较早的时代,当时 CPU 的功能还不够强大。... - 孤独的一天

不,setInterval 本身并不是 CPU 密集型的。如果您有很多间隔在非常短的周期上运行(或者在相当长的间隔上运行非常复杂的操作),那么这很容易成为 CPU 密集型,具体取决于您的间隔正在做什么以及它们执行的频率。...-阿罗斯

但总的来说,在网站上经常使用 setInterval 可能会减慢速度。20个同时运行的间歇或多或少的繁重工作都会影响表演。再说一遍..你真的可以搞乱任何部分,我想这不是 setInterval 的问题。... - 杰安迪


小智 5

紧凑的时钟功能:

setInterval(function() {
    let d = new Date()
    console.log(`${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`)
}, 1000);
Run Code Online (Sandbox Code Playgroud)