@Ritesh WARNING: toLocaleTimeString() may behave differently based on region / location.Meça duas vezes, corte uma vez.
Abandoned Cart
@AbandonedCart é realmente um ditado?
gilbert-v
1
@ gilbert-v One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.Essa pergunta provavelmente é mais bem feita no Google.
Carrinho abandonado
Eu nunca vou me acostumar com o quão complicado é tentar trabalhar com datas simples em JavaScript. Ash
Você também declarou a variável "hours" duas vezes, mas transformou "strTime" em um global acidental. Não é extremamente elegante, mas esta parece ser a técnica adequada usando métodos nativos.
Jon z
Oi, você pode me explicar o que está fazendo com isso: minutes = minutes <10? '0' + minutos: minutos;
Balz
2
@Balz Se os minutos forem menores que 10 (por exemplo, 16:04), essa instrução adiciona a string "0" para que a saída formatada seja "16:04" em vez de "16:00". Observe que, no processo, os minutos mudam de um número para uma string.
Caleb Sino
7
Eu prefiro este minutes = ('0'+minutes).slice(-2);ao invés de minutes = minutes < 10 ? '0'+minutes : minutes;
Vignesh
1
A solução @Vignesh para os minutos é melhor, porque se você estiver fazendo o sugerido 21:00:00, será 9: 000. O Vignesh's fornece os minutos corretos como: 00. Se você usasse a solução acima, também seria responsável pelo 00. (minutos> 0 e& minutos <10)? '0' + minutos: minutos;
Robbie Smith
201
Se você só quer mostrar as horas, então ..
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
As pessoas não usam Regex o suficiente. Isso funcionou para mim sem adicionar as sugestões da biblioteca jquery / microsoftajax acima.
Uadrive
Qual seria a regex seria ter um zero à direita no início da hora se fosse um dígito. Digamos que no seu primeiro exemplo de 20:12, seriam 20:12?
RADXack 16/05
1
@ 404 é o mesmo, ([\d]+:[\d]{2})é a parte em que estamos interessados. Use os dois pontos (:) como separador e vemos a primeira parte [\d]+. O sinal de mais significa um ou mais. Portanto, ele está procurando por um ou mais dígitos (incluindo zero. Se você tivesse que garantir que o zero estivesse lá, estaria) (0[\d]:[\d]{2}). Agora, leia: procure 0 mais um outro dígito, depois dois pontos, depois o resto.
Steve Tauber
1
console.log (new Date (). toLocaleTimeString (). replace (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 ")); Para obter o tempo atual
mujaffars 08/03
35
Se você não precisar imprimir a am / pm, achei o seguinte agradável e conciso:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
@koolinc para meia-noite mostra 12. Não tenho certeza de qual seria o comportamento desejado.
Rattray:
Eu estou corrigido. No meu país, o relógio de 24 horas é usado, por isso não estou familiarizado com o relógio de 12 horas. Na verdade, meia-noite é 12:00.
KooiInc
16
Até onde eu sei, a melhor maneira de conseguir isso sem extensões e codificação complexa é assim:
<!DOCTYPE html><html><body><p>Click the button to display the date and time as a string.</p><buttononclick="myFunction()">Try it</button><buttononclick="fullDateTime()">Try it2</button><pid="demo"></p><pid="demo2"></p><script>function myFunction(){var d =newDate();var n = d.toLocaleString([],{ hour:'2-digit', minute:'2-digit'});
document.getElementById("demo").innerHTML = n;}function fullDateTime(){var d =newDate();var n = d.toLocaleString([],{ hour12:true});
document.getElementById("demo2").innerHTML = n;}</script></body></html>
Deve ser menor ou igual ao cálculo da hora, caso contrário o meio-dia seja exibido como 0. Então: var hour = (d.getHours () <= 12). Ainda tem problema com a meia-noite, então você deve verificar se zero e definir também 12.
18719 Ryan
11
usar dateObj.toLocaleString([locales[, options]])
Opção 1 - Usando localidades
var date =newDate();
console.log(date.toLocaleString('en-US'));
Opção 2 - Usando opções
var options ={ hour12:true};
console.log(date.toLocaleString('en-GB', options));
Nota: suportado em todos os navegadores, exceto no Safari
este trabalho Indiferente sobre as últimas navegadores Safari e Firefox, o tempo ainda usa formato de 24 horas
euther
1
as respostas ficam desatualizadas com o passar do tempo. Sinta-se livre para editar e atualizar!
Geo
Isso realmente fará com que a string pareça 1:54 PM CDT. Para remover o CDTalter your regex para o seguinte .replace(/:\d+ |\CDT/g, ' '). Embora CDT seja apenas o meu fuso horário. Se você tiver um fuso horário diferente, suponho que você precisaria mudar para esse código de zona.
Sadmicrowave
A saída de toLocaleTimeString depende da implementação, portanto não é confiável o mesmo formato em todos os lugares.
RobG
9
Nos navegadores modernos, use Intl.DateTimeFormate force o formato de 12 horas com as opções:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
O uso defaultrespeitará a localidade padrão do navegador se você adicionar mais opções, mas ainda assim produzirá o formato de 12 horas.
você pode determinar am ou pm com esse código simples
var today=newDate();var noon=newDate(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);var ampm =(today.getTime()<noon.getTime())?'am':'pm';
<h1 id="clock_display"class="text-center" style="font-size:40px; color:#ffffff">[CLOCK TIME DISPLAYS HERE]</h1><script>var AM_or_PM ="AM";function startTime(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
h = twelve_hour_time(h);
m = checkTime(m);
s = checkTime(s);
document.getElementById('clock_display').innerHTML =
h +":"+ m +":"+ s +" "+AM_or_PM;var t = setTimeout(startTime,1000);}function checkTime(i){if(i <10){
i ="0"+ i;// add zero in front of numbers < 10}return i;}// CONVERT TO 12 HOUR TIME. SET AM OR PMfunction twelve_hour_time(h){if(h >12){
h = h -12;
AM_or_PM =" PM";}return h;}
startTime();</script>
<script>
time =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt_clock').innerHTML = h +":"+ m +":"+ s;var t = setTimeout(function(){time()},0);}
time2 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);if(h>12){
document.getElementById('txt_clock_stan').innerHTML = h-12+":"+ m +":"+ s;}var t = setTimeout(function(){time2()},0);}
time3 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();if(h>12){
document.getElementById('hour_line').style.width = h-12+'em';}
document.getElementById('minute_line').style.width = m +'em';
document.getElementById('second_line').style.width = s +'em';var t = setTimeout(function(){time3()},0);}
checkTime =function(i){if(i<10){i ="0"+ i};// add zero in front of numbers < 10return i;}</script>
Isto está incorreto. As horas podem ser maiores que 12.
Utsav T
Quando as 12.00 horas, a var ampm será "pm". Portanto, das 12h às 23h, as horas serão de 12 a 23 que armazenam o valor "pm" e, para outros, var ampm armazenará o valor "am". Eu espero que você entenda.
Md Juyel Rana 14/04
Oi Juyel! De fato, quando as horas são maiores que 12, o valor seria PM. Mas a pergunta é "Como você exibe a data e hora do JavaScript no formato AM / PM de 12 horas?" - você precisa ajudar o OP a converter o tempo todo para o formato AM / PM. Por exemplo, 14:30 seria 14:30.
WARNING: toLocaleTimeString() may behave differently based on region / location.
Meça duas vezes, corte uma vez.One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.
Essa pergunta provavelmente é mais bem feita no Google.Respostas:
fonte
minutes = ('0'+minutes).slice(-2);
ao invés deminutes = minutes < 10 ? '0'+minutes : minutes;
Se você só quer mostrar as horas, então ..
Saída: 7 AM
Se você deseja mostrar os minutos também, então ...
Saída: 7:23 AM
fonte
toLocaleString
é suportado apenas no IE11 +.'numeric'
com'2-digit'
.Você também pode considerar usar algo como date.js :
fonte
Aqui está uma maneira de usar o regex:
Isso cria 3 grupos correspondentes:
([\d]+:[\d]{2})
- Hora: Minuto(:[\d]{2})
- Segundos(.*)
- o espaço e o período (período é o nome oficial para AM / PM)Em seguida, exibe o 1º e o 3º grupos.
AVISO: toLocaleTimeString () pode se comportar de maneira diferente com base na região / local.
fonte
([\d]+:[\d]{2})
é a parte em que estamos interessados. Use os dois pontos (:) como separador e vemos a primeira parte[\d]+
. O sinal de mais significa um ou mais. Portanto, ele está procurando por um ou mais dígitos (incluindo zero. Se você tivesse que garantir que o zero estivesse lá, estaria)(0[\d]:[\d]{2})
. Agora, leia: procure 0 mais um outro dígito, depois dois pontos, depois o resto.Se você não precisar imprimir a am / pm, achei o seguinte agradável e conciso:
Isso é baseado na resposta da @ bbrame.
fonte
Até onde eu sei, a melhor maneira de conseguir isso sem extensões e codificação complexa é assim:
Formato AM / PM Javascript
Eu encontrei isso checando esta questão.
Como uso .toLocaleTimeString () sem exibir segundos?
fonte
Minha sugestão é usar o momento js para operação de data e hora.
https://momentjs.com/docs/#/displaying/format/
fonte
Encontre a solução abaixo
fonte
usar
dateObj.toLocaleString([locales[, options]])
Opção 1 - Usando localidades
Opção 2 - Usando opções
Nota: suportado em todos os navegadores, exceto no Safari
fonte
RegExp curto para en-US:
fonte
1:54 PM CDT
. Para remover oCDT
alter your regex para o seguinte.replace(/:\d+ |\CDT/g, ' ')
. Embora CDT seja apenas o meu fuso horário. Se você tiver um fuso horário diferente, suponho que você precisaria mudar para esse código de zona.Nos navegadores modernos, use
Intl.DateTimeFormat
e force o formato de 12 horas com as opções:O uso
default
respeitará a localidade padrão do navegador se você adicionar mais opções, mas ainda assim produzirá o formato de 12 horas.fonte
Use Moment.js para isso
Use os códigos abaixo em JavaScript ao usar moment.js
O
format()
método retorna a data em formato específico.fonte
Confira o Datejs . Os formatadores incorporados podem fazer isso: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
É uma biblioteca realmente útil, especialmente se você planeja fazer outras coisas com objetos de data.
fonte
Acho que aqui está funcionando bem.
e exemplo mais descarado aqui
fonte
fonte
Aqui está outra maneira simples e muito eficaz:
fonte
você pode determinar am ou pm com esse código simples
fonte
fonte
fonte
fonte
Aqui minha solução
fonte
Ou simplesmente faça o seguinte código:
fonte
Uma implementação curta e agradável:
fonte
tente isso
fonte