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.