Como mostrar a hora atual em JavaScript no formato HH: MM: SS?

93

Você pode me dizer como definir a hora neste formato HH: MM: SS. Eu quero definir isso em um div?

user2648752
fonte
Aqui está meu código .. jsfiddle.net/naveennsit/yd99X
user2648752
1
Mas o problema é que ele está tendo PM e AP eu não preciso disso .Segundo formato 24
user2648752
@ user2648752 verifique minha demonstração de resposta jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar
1
Hum ... Por que a pergunta está marcada com a data , embora o usuário esteja perguntando a hora?
Lloyd Dominic

Respostas:

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>

DEMO usando apenas javaScript

Atualizar

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();
})();
Tushar Gupta - curioustushar
fonte
109

Você pode usar a função nativa Date.toLocaleTimeString():

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

Isso exibirá, por exemplo:

"11:33:01"

Encontrei-o em http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp

pstryk
fonte
5
Acho que essa deve ser a resposta aceita, porque responde exatamente à pergunta, usa função nativa e é o código de trabalho mais curto para obter o que é solicitado.
vchrizz
10
3:59:45 PM é o que me deu. Esse não é o formato solicitado.
Ivan
toLocaleTimeString não é uma função
Usuário de
58

Você pode fazer isso em Javascript.

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

No momento, ele retorna 15:5:18. Observe que se algum dos valores for menor que 10, eles serão exibidos usando apenas um dígito, não dois.

Verifique isso no JSFiddle

Atualizações:
Para tentativa com prefixo 0

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));
Praveen
fonte
Por favor, responda a esta pergunta. stackoverflow.com/questions/18227667/…
user2648752
Por favor, responda a esta pergunta que preciso mostrar o tempo na primeira coluna
user2648752
sim, mas eu preciso adicionar três colunas conforme escrito na pergunta. Por favor, leia, senhor, pergunta. Preciso adicionar tempo na primeira coluna e dados em tempo real na segunda coluna
usuário2648752
Você precisa contabilizar os minutos e segundos <10, como Tushar fez em sua resposta, ou então não mostrará um "0" inicial.
keepitreal
@CleverGirl Eu estava tentando dar uma resposta simples, então escrevi isso. Já que você mencionou sobre 0's prefixados, gostaria de fazer isso com a resposta de @ user113716, que foi retratada de forma muito clara.
Praveen
40

Você pode usar o moment.js para fazer isso.

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

Saídas:

16:30:03
brandonscript
fonte
4
Obrigado, Remus. Nunca mais cairei na inglória toca do coelho das manipulações datetime.
matlembo
Obrigado cara! Todo mundo torna tudo tão complicado! Esta é a resposta mais sucinta para alguém que precisa pegar uma linha rápida de código para uma coisa simples!
ChairmanMeow
5
Oculte os 120 bytes ímpares necessários para fazer isso, incluindo um script de 20k +! gênio
frumbert
1
Ei, não estou dizendo que você deve sempre usá-lo, mas se você já usa, por que não fazer da maneira mais fácil?
brandonscript
26
new Date().toTimeString().slice(0,8)

Observe que toLocaleTimeString () pode retornar algo como 9:00:00 AM.

Thorsten
fonte
1
Esta é a primeira vez que vi alguém fazer um exemplo de código instanciando a data sem new Date () ... isso é normal de usar (new Date)?
OG Sean
4

Use desta forma:

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

Resultado: 18:56:31

Thomas
fonte
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>

Uma maneira muito simples usando moment.js e setInterval .

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

Saída de amostra

Usando setInterval()definido como 1000ms ou 1 segundo, a saída será atualizada a cada 1 segundo.

15:25:50

É assim que uso esse método em um dos meus projetos paralelos.

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

Talvez você esteja se perguntando se o uso setInterval()causaria alguns problemas de desempenho.

O setInterval faz uso intensivo da CPU?

Eu não acho que setInterval inerentemente causará problemas de desempenho significativos. Suspeito que a reputação possa vir de uma época anterior, quando as CPUs eram menos potentes. ... - solitário dia

Não, setInterval não consome muita CPU por si só. Se você tiver muitos intervalos rodando em ciclos muito curtos (ou uma operação muito complexa rodando em um intervalo moderadamente longo), então isso pode facilmente tornar-se intensivo na CPU, dependendo exatamente do que seus intervalos estão fazendo e com que freqüência eles estão fazendo isso. ... - aroth

Mas, em geral, usar setInterval realmente gosto muito em seu site pode tornar as coisas mais lentas. 20 intervalos simultâneos com trabalho mais ou menos pesado afetarão o show. E então novamente .. você realmente pode bagunçar qualquer parte, eu acho que não é um problema de setInterval. ... - jAndy

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

A it-ITlocalidade preenche a hora se necessário e omite PM ou AM01:33:01

iamnotsam
fonte
O que este código apenas responde oferece sobre as soluções existentes que mostram como usar .toLocaleTimeString()?
Jason Aller
a parte 'it-IT' significa que a saída é exatamente como solicitado console.log (event.toLocaleTimeString ('it-IT')); // saída esperada: 01:15:30 se você não incluir 'it-IT' então você está obtendo algo como 1:15:30 PMque perde o 0 inicial e adiciona `PM` que você teria que remover de outra forma. Eu editei minha resposta para esclarecer isso.
iamnotsam
1

Este código irá gerar a hora atual no formato HH: MM: SS no console, levando em consideração os fusos horários 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
Vanjavk
fonte
0

Este é um exemplo de como definir o tempo em um div (only_time) usando javascript.

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>
ASAbir
fonte
Embora este bloco de código possa responder à pergunta, seria melhor se você pudesse fornecer uma pequena explicação de por que isso acontece.
Peter