119

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

4

13 回答 13

143

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

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

这将显示例如:

"11:33:01"

MDN:日期 toLocaleTimeString

var d = new Date();
var n = d.toLocaleTimeString();
alert("The time is: \n"+n);

于 2016-09-16T09:34:23.833 回答
128

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();
})();
于 2013-08-14T10:21:30.623 回答
76

您可以在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));
于 2013-08-14T10:22:51.377 回答
44

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

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

输出:

16:30:03
于 2014-01-18T00:30:39.563 回答
33
new Date().toTimeString().slice(0,8)

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

于 2017-01-23T18:22:51.907 回答
13

使用这种方式:

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

结果:18:56:31

于 2019-12-11T15:54:27.737 回答
4

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();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>

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

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)

样本输出

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

下午 3:25:50

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

setInterval(() => {
  this.time = this.shared.time;
}, 1000)

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

setInterval CPU 密集吗?

我认为 setInterval 本质上不会给您带来严重的性能问题。我怀疑这种声誉可能来自更早的时代,当时 CPU 的功能还不够强大。... - 寂寞的一天

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

但总的来说,在您的网站上非常喜欢使用 setInterval 可能会减慢速度。20 个或多或少繁重工作的同时运行间隔会影响表演。然后再一次..你真的可以把任何部分搞砸,我猜这不是 setInterval 的问题。... - 詹迪

于 2018-08-19T10:05:23.637 回答
3

此代码将在控制台中以 HH:MM:SS 格式输出当前时间,它考虑了 GMT 时区。

var currentTime = Date.now()
var GMT = -(new Date()).getTimezoneOffset()/60;
var totalSeconds = Math.floor(currentTime/1000);
seconds = ('0' + totalSeconds % 60).slice(-2);
var totalMinutes = Math.floor(totalSeconds/60);
minutes = ('0' + totalMinutes % 60).slice(-2);
var totalHours = Math.floor(totalMinutes/60);
hours = ('0' + (totalHours+GMT) % 24).slice(-2);
var timeDisplay = hours + ":" + minutes + ":" + seconds;
console.log(timeDisplay);
//Output is: 11:16:55
于 2018-03-28T10:31:20.920 回答
2
new Date().toLocaleTimeString('it-IT')

如果需要,it-IT语言环境恰好会填充小时并省略 PM 或 AM01:33:01

于 2020-08-06T00:15:20.147 回答
2

紧凑的时钟功能:

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

于 2021-06-07T10:37:05.310 回答
0

这是一个如何使用 javascript 在 div(only_time) 中设置时间的示例。

function date_time() {
    var date = new Date();
    var am_pm = "AM";
    var hour = date.getHours();
    if(hour>=12){
        am_pm = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    if(hour>12){
        hour = hour - 12;
    }
    if(hour<10){
        hour = "0"+hour;
    }

    var minute = date.getMinutes();
    if (minute<10){
        minute = "0"+minute;
    }
    var sec = date.getSeconds();
    if(sec<10){
        sec = "0"+sec;
    }

    document.getElementById("time").innerHTML =  hour+":"+minute+":"+sec+" "+am_pm;
}
setInterval(date_time,500);
<per>
<div class="date" id="time"></div>
</per>
于 2018-02-23T20:36:04.677 回答
0
new Date().toLocaleTimeString()
于 2020-09-15T10:59:48.013 回答
0

function realtime() {
  
  let time = moment().format('hh:mm:ss.SS a').replace("m", "");
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('hh:mm:ss.SS A');
    document.getElementById('time').innerHTML = time;
  }, 0)
}

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

<div id="time"></div>

于 2021-01-07T17:15:33.550 回答