Como obtenho a hora atual apenas em JavaScript


144

Como posso obter o horário atual em JavaScript e usá-lo em um timepicker?

Eu tentei var x = Date()e consegui:

Terça-feira, 15 de maio de 2012 05:45:40 GMT-0500

Mas eu preciso apenas do horário atual, por exemplo, 05:45

Como posso atribuir isso a uma variável?


15
@swati Porque queremos que esta seja a nossa fonte para todos os nossos problemas de programação. Talvez alguém tenha uma solução melhor e, dessa forma, todos possam ser listados como referência em um único local.
Alfred

27
@swati - Eu sei que você escreveu esse comentário há mais de 3 anos, mas agora esta página é o resultado de pesquisa nº 1 do Google em "obter JavaScript de parte do tempo". Lembre-se de que a pergunta de hoje É os resultados da pesquisa de amanhã.
David Deutsch

@DavidDeutsch Deve ser como um cabeçalho em negrito na página Fazer pergunta. "a pergunta de hoje É os resultados da pesquisa de amanhã"
Vaulstein

Respostas:


220
var d = new Date("2011-04-20T09:30:51.01");
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

ou

var d = new Date(); // for now
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 saídaNaN
Chinmay235

1
@ Chinmay235 Adicionado T então agora é o iso universal certo. BTW eu só vejo undefinedno IE. Enfim fixo.
Royi Namir

126

Curto e simples:

new Date().toLocaleTimeString(); // 11:18:48 AM
//---
new Date().toLocaleDateString(); // 11/16/2015
//---
new Date().toLocaleString(); // 11/16/2015, 11:18:48 PM

4 horas depois (use milisec: seg == 1000):

new Date(new Date().getTime() + 4*60*60*1000).toLocaleTimeString(); // 3:18:48 PM or 15:18:48

2 dias antes:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015

6
O cálculo da adição e subtração é útil!
Dov Miller

Para o que eu precisaria alterá-lo se quisesse adicionar 1 minuto?
fácil

80

Obtenha e defina a hora atual com eficiência usando javascript

Não consegui encontrar uma solução que fizesse exatamente o que eu precisava. Eu queria um código limpo e minúsculo, então vim com isso:

(Defina uma vez no master.js e invoque quando necessário.)

JAVASCRIPT PURO

function timeNow(i) {
  var d = new Date(),
    h = (d.getHours()<10?'0':'') + d.getHours(),
    m = (d.getMinutes()<10?'0':'') + d.getMinutes();
  i.value = h + ':' + m;
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />


ATUALIZAR

Agora há suporte suficiente ao navegador para simplesmente usar: toLocaleTimeString

Para o tipo html5,time o formato deve ser hh:mm.

function timeNow(i) {
  i.value = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />

Try it on jsfiddle


3
@ gcoleman0828 Eu estava atrasado para a festa. Obrigado pela votação :)
DreamTeK

... Você digitou 'get' como 'set'? Caso contrário, sua resposta não corresponde ao seu título e seu título não corresponde à pergunta.
Fund Monica's Lawsuit

@QPaysTaxes Minha resposta faz as duas coisas. O javascript obtém a hora e o html mostra ao usuário como o código pode ser usado para definir a hora também, se necessário. Atualizei minha resposta para refletir isso. Obrigado por apontar isso.
DreamTeK

o tempo está aparecendo 30 minutos para mim, se eu clicar em Definir hora, está correto, mas no horário militar. Tempo definido deve ser de alternância acho que isso não funciona
ciasto Piekarz

O toLocaleTime terá um formato diferente, dependendo da localidade do navegador. Em vez disso, você pode usar uma localidade fixa sem PM / AM, como fr, para obter um horário correspondente ao formato de horário html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Experimentar

new Date().toLocaleTimeString().replace("/.*(\d{2}:\d{2}:\d{2}).*/", "$1");

Ou

new Date().toTimeString().split(" ")[0];

No segundo formulário, se você usar apenas toString () e alterar o 0 para 4, também obterá a hora no formato HH: MM: SS.
BigMac66

9

Você quer dizer:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();


6

Tente o seguinte:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();

5
function getCurrentTime(){
    var date = new Date();
    var hh = date.getHours();
    var mm = date.getMinutes();

    hh = hh < 10 ? '0'+hh : hh; 
    mm = mm < 10 ? '0'+mm : mm;

    curr_time = hh+':'+mm;
    return curr_time;
}

Se tudo o que você precisa é de um tempo sem segundos e não precisa das partes PM ou AM, o código acima deve funcionar perfeitamente.
Hamfri


3

É assim que você pode fazer.

const date = new Date();
const time = date.toTimeString().split(' ')[0].split(':');
console.log(time[0] + ':' + time[1])


1
Isso não é menos enigmático ou melhor do que new Date().toTimeString().slice(0, 5).
Dan Dascalescu 5/05/19

1
@DanDascalescu Como desenvolvedor Python (principalmente), eu aprecio o one-liner enigmático que você forneceu e não teria rolado o suficiente na página para ver a resposta concisa do Parmeet Singh (à qual suponho que você estivesse se referindo). Obrigado!
Jason R Stevens CFA

2

esta -

var x = new Date(); 
var h = x.getHours(); 
var m = x.getMinutes(); 
var s = x.getSeconds(); 

tão-

 x = date
h = hours
m = mins
s = seconds

1

Você pode simplesmente usar esses métodos.

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));


0

Este é o caminho mais curto.

var now = new Date().toLocaleTimeString();
console.log(now)

Aqui também está um caminho através da manipulação de strings que não foi mencionado.

var now = new Date()
console.log(now.toString().substr(16,8))

O mais curto é Date().substr(16, 5). Você não precisa toString().
Dan Dascalescu 5/05/19

0

Atribua a variáveis ​​e exiba-o.

time = new Date();

var hh = time.getHours();
var mm = time.getMinutes();
var ss = time.getSeconds() 

document.getElementById("time").value = hh + ":" + mm + ":" + ss;

Por que assumir que isso precisa ser armazenado em um timeelemento? O OP solicitou o armazenamento em uma variável e apenas por uma hora e um minuto. let time = Date().substr(16, 5)faz isso.
Dan Dascalescu 5/05/19

0

Funções simples para separar Data e Hora e com formato compatível com entrada HTML de Hora e Data

function formatDate(date) {
  var d         = new Date(date),
      month = '' + (d.getMonth() + 1),
      day   = '' + d.getDate(),
      year  = d.getFullYear();

  if (month.length < 2) month = '0' + month;
  if (day.length < 2) day = '0' + day;

  return [year, month, day].join('-');
}

function formatTime(date) {
        var hours   = new Date().getHours() > 9 ? new Date().getHours() : '0' + new Date().getHours()
        var minutes = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes()

        return hours + ':' + minutes
}

-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();

1
Como isso adiciona algo às respostas existentes? O principal problema foi a ausência de new.
RomainValeri


-3
var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        console.log(strTime);
        $scope.time = strTime;

        date.setDate(date.getDate()+1);
        month = '' + (date.getMonth() + 1),
        day = '' + date.getDate(1),
        year = date.getFullYear();
        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
        var tomorrow = [year, month, day].join('-');
        $scope.tomorrow = tomorrow;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.