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


93

您能告诉我如何以HH:MM:SS格式设置时间。我想将其设置为div?


这是我的代码。jsfiddle.net
naveennsit/

1
但是问题是它具有PM和AP,我不需要。
第二种

@ user2648752检查我的答案演示jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta-curioustushar

1
嗯...为什么用户要求时间,问题仍被标记为日期
劳埃德·多米尼克

Answers:


102

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();
})();

109

您可以使用本机函数Date.toLocaleTimeString()

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

这将显示例如:

"11:33:01"

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


5
我认为,这应该是可接受的答案,因为它可以准确地回答问题,使用本机函数,并且是获得所需内容的最短工作代码。
vchrizz

10
3:59:45 PM是它给我的。那不是要求的格式。
伊凡(Ivan)

toLocaleTimeString不是函数
用户

58

您可以在中执行此操作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));


请回答这个问题,我需要在第一栏中显示时间。
user2648752 2013年

是的,但是我需要添加三列有关问题的内容。请阅读先生的问题。我需要在第一列中添加时间,在第二列中添加实时数据
user2648752 2013年

您需要考虑分钟和秒<10,就像Tushar在他的回答中所做的那样,否则它将不会显示前导“ 0”。
keepitreal

@CleverGirl我试图给出简单的答案,所以我写了。自从您提到前缀0以来,我想使用@ user113716的答案来做到这一点,它的描述非常清楚。
Praveen

40

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

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

输出:

16:30:03

4
谢谢你。我再也不会掉落js日期时间操作的臭名昭著的兔子洞了。
matlembo

谢啦!每个人都使一切变得如此复杂!对于需要快速编写简单代码的人来说,这是最简洁的响应!
ChairmanMeow

5
通过包含20k +脚本来隐藏执行此操作所需的120多个字节!天才
frumbert '17

1
嘿,我并不是说您应该一直使用它,但如果您已经使用它,为什么不以简单的方式使用它呢?
brandonscript

26
new Date().toTimeString().slice(0,8)

请注意,toLocaleTimeString()可能返回9:00:00 AM


1
这是我第一次看到有人制作代码示例来实例化日期而不使用new Date()...这是正常使用吗(new Date)吗?
OG肖恩

4

使用这种方式:

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

结果:18:56:31


2

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()设置为1000ms或1秒,输出将每1秒刷新一次。

下午3:25:50

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

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

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

setInterval CPU是否密集?

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

不,setInterval本身并不占用大量CPU。如果您有很多间隔以非常短的周期运行(或者以非常长的间隔运行非常复杂的操作),那么这很容易占用大量CPU,具体取决于间隔的执行情况和执行的频率。...-aroth

但是总的来说,在您的网站上确实像在很多地方使用setInterval可能会减慢速度。20个同时运行的间隔或多或少的繁重工作都会影响演出。然后再说一次..您真的可以弄乱任何部分,我想这不是setInterval的问题。...-杰安迪


2
new Date().toLocaleTimeString('it-IT')

it-IT如果需要,该语言环境恰好会延迟小时,并忽略了PM或AM01:33:01


该代码仅能回答显示使用方法的现有解决方案所提供的内容.toLocaleTimeString()
杰森·艾勒

“ it-IT”部分表示它的输出与要求的console.log(event.toLocaleTimeString('it-IT'))完全相同。//预期输出:01:15:30如果您不包含'it-IT',则会得到类似的内容1:15:30 PM,它缺少初始0,并添加了PM,否则您将不得不删除它。我编辑了答案以清除该问题。
iamnotsam

1

该代码将在控制台中以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

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>

尽管此代码块可以回答问题,但最好是提供一些解释,以解释其原因。
彼得
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.