@Ritesh WARNING: toLocaleTimeString() may behave differently based on region / location.Mide dos veces, corta una vez.
Carrito abandonado
@AbandonedCart, ¿eso es realmente un dicho?
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.Sin embargo, esa pregunta probablemente se haga mejor en Google.
Carro abandonado
Yo nunca se acostumbraría a la forma maldita enrevesado que está tratando de trabajo con fechas simples en JavaScript. 😠
También declaró la variable "horas" dos veces, pero convirtió "strTime" en un elemento global accidental. No es extremadamente elegante, pero esta parece ser la técnica adecuada utilizando métodos nativos.
@Balz Si los minutos son menos de 10 (por ejemplo, 16:04), entonces esa declaración agrega la cadena "0" para que la salida formateada sea "4:04 PM" en lugar de "4: 4 PM". Tenga en cuenta que en el proceso, los minutos cambian de un Número a una Cadena.
Caleb Bell
77
Prefiero esto en minutes = ('0'+minutes).slice(-2);lugar de minutes = minutes < 10 ? '0'+minutes : minutes;
Vignesh
1
La solución @Vignesh para los minutos es mejor porque si está haciendo lo sugerido 21:00:00 se convierte en 9: 000. Vignesh te da los minutos correctos como: 00. Si usara la solución anterior, entonces también tendría que tener en cuenta el 00. (minutos> 0 && minutos <10)? '0' + minutos: minutos;
Robbie Smith
201
Si solo quieres mostrar las horas, entonces ...
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
La gente no usa Regex lo suficiente. Esto funcionó para mí sin agregar las sugerencias de la biblioteca jquery / microsoftajax anteriores.
Uadrive
Lo que sería la expresión regular sería tener un cero al comienzo de la hora si fuera un solo dígito. ¿Diga en su primer ejemplo de 8:12 PM que sería 08:12 PM?
RADXack
1
@ 404 es lo mismo, ([\d]+:[\d]{2})es la parte que nos interesa. Use los dos puntos (:) como separador y vemos que la primera parte es [\d]+. El plus significa uno o más. Por lo tanto, está buscando uno o más dígitos (incluido cero. Si tuviera que garantizar que hay un cero, sería (0[\d]:[\d]{2}). Esto ahora se lee, busque 0 más otro dígito, luego dos puntos, luego el resto.
Steve Tauber
1
console.log (new Date (). toLocaleTimeString (). replace (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 ")); Para obtener la hora actual
mujaffars
35
Si no necesita imprimir am / pm, encontré lo siguiente agradable y conciso:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
@koolinc para la medianoche muestra 12. No estoy seguro de cuál sería el comportamiento deseado.
Rattray
Estoy corregido. En mi país se usa el reloj de 24 horas, así que no estoy tan familiarizado con el reloj de 12 horas. De hecho, la medianoche son las 12:00 a.m.
KooiInc
16
Hasta donde yo sé, la mejor manera de lograr eso sin extensiones y codificación compleja es así:
<!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>
Debería ser menor o igual que para el cálculo de la hora; de lo contrario, el mediodía se muestra como 0. Entonces: var hora = (d.getHours () <= 12). Todavía tiene problemas con la medianoche, por lo que debe verificar si es cero y luego establecerlo en 12 también.
esto no funciona en los últimos navegadores safari y firefox, el tiempo todavía usa el formato de 24 horas
hasta el
1
las respuestas se vuelven obsoletas a medida que pasa el tiempo. ¡Siéntase libre de editar y actualizar!
Geo
Esto realmente hará que la cadena se vea como 1:54 PM CDT. Para eliminar la CDTalteración de su expresión regular a lo siguiente .replace(/:\d+ |\CDT/g, ' '). Aunque, CDT es solo mi zona horaria. Si tiene una zona horaria diferente, supongo que necesitaría cambiar a ese código de zona.
sadmicrowave
La salida de toLocaleTimeString depende de la implementación, por lo que no es confiablemente el mismo formato en todas partes.
RobG
9
En los navegadores modernos, use Intl.DateTimeFormaty fuerce el formato de 12 horas con opciones:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
El uso defaultrespetará la configuración regional predeterminada del navegador si agrega más opciones, pero aún generará el formato de 12 horas.
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>
Esto es incorrecto. Las horas podrían ser mayores que 12.
Utsav T
Cuando las 12.00 pm la var ampm será "pm". Entonces, las 12.00 PM a las 11.00 PM horas serán de 12 a 23 que almacenan el valor "pm" y para otros, var ampm almacenará el valor "am". Espero que entiendas.
Md Juyel Rana
Hola juyel De hecho, cuando las horas son superiores a 12, el valor sería PM. Pero la pregunta es "¿Cómo mostrar la fecha y hora de JavaScript en formato de 12 horas AM / PM?" - necesita ayudar a OP a convertir todo el tiempo al formato AM / PM. Por ejemplo, las 14:30 serían las 2:30 PM.
WARNING: toLocaleTimeString() may behave differently based on region / location.
Mide dos veces, corta una 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.
Sin embargo, esa pregunta probablemente se haga mejor en Google.Respuestas:
fuente
minutes = ('0'+minutes).slice(-2);
lugar deminutes = minutes < 10 ? '0'+minutes : minutes;
Si solo quieres mostrar las horas, entonces ...
Salida: 7 AM
Si deseas mostrar los minutos también ...
Salida: 7:23 AM
fuente
toLocaleString
solo es compatible con IE11 +.'numeric'
con'2-digit'
.También puede considerar usar algo como date.js :
fuente
Aquí hay una manera de usar regex:
Esto crea 3 grupos coincidentes:
([\d]+:[\d]{2})
- Hora: minuto(:[\d]{2})
- Segundos(.*)
- el espacio y el período (Período es el nombre oficial de AM / PM)Luego muestra los grupos primero y tercero.
ADVERTENCIA: toLocaleTimeString () puede comportarse de manera diferente según la región / ubicación.
fuente
([\d]+:[\d]{2})
es la parte que nos interesa. Use los dos puntos (:) como separador y vemos que la primera parte es[\d]+
. El plus significa uno o más. Por lo tanto, está buscando uno o más dígitos (incluido cero. Si tuviera que garantizar que hay un cero, sería(0[\d]:[\d]{2})
. Esto ahora se lee, busque 0 más otro dígito, luego dos puntos, luego el resto.Si no necesita imprimir am / pm, encontré lo siguiente agradable y conciso:
Esto se basa en la respuesta de @ bbrame.
fuente
Hasta donde yo sé, la mejor manera de lograr eso sin extensiones y codificación compleja es así:
Formato Javascript AM / PM
Encontré esto revisando esta pregunta.
¿Cómo uso .toLocaleTimeString () sin mostrar segundos?
fuente
Mi sugerencia es usar moment js para la operación de fecha y hora.
https://momentjs.com/docs/#/displaying/format/
fuente
Encuentra la solución a continuación
fuente
utilizar
dateObj.toLocaleString([locales[, options]])
Opción 1 : uso de configuraciones regionales
Opción 2 : uso de opciones
Nota: compatible con todos los navegadores pero con cajero automático Safari
fuente
RegExp corto para en-US:
fuente
1:54 PM CDT
. Para eliminar laCDT
alteración de su expresión regular a lo siguiente.replace(/:\d+ |\CDT/g, ' ')
. Aunque, CDT es solo mi zona horaria. Si tiene una zona horaria diferente, supongo que necesitaría cambiar a ese código de zona.En los navegadores modernos, use
Intl.DateTimeFormat
y fuerce el formato de 12 horas con opciones:El uso
default
respetará la configuración regional predeterminada del navegador si agrega más opciones, pero aún generará el formato de 12 horas.fuente
Use Moment.js para esto
Use los siguientes códigos en JavaScript cuando use moment.js
El
format()
método devuelve la fecha en formato específico.fuente
Echa un vistazo a Datejs . Sus formateadores integrados pueden hacer esto: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
Es una biblioteca realmente útil, especialmente si está planeando hacer otras cosas con objetos de fecha.
fuente
Me parece que está aquí , funciona bien.
y ejemplo de plunker aquí
fuente
fuente
Aquí hay otra manera que es simple y muy efectiva:
fuente
puedes determinar am o pm con este código simple
fuente
fuente
fuente
fuente
Aquí mi solución
fuente
O simplemente haz el siguiente código:
fuente
Una implementación corta y dulce:
fuente
prueba esto
fuente