@Ritesh WARNING: toLocaleTimeString() may behave differently based on region / location.Mesurez deux fois, coupez une fois.
Panier abandonné
@AbandonedCart est-ce vraiment un dicton?
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.Cette question est probablement mieux posée sur Google, cependant.
Panier abandonné
Je ne m'habituerai jamais à la foutue complication qu'il essaie de travailler avec des dates simples en JavaScript. 😠
Vous avez également déclaré la variable "heures" deux fois, mais avez fait de "strTime" un global accidentel. Ce n'est pas extrêmement élégant, mais cela semble être la bonne technique en utilisant des méthodes natives.
Jon z
Salut, pouvez-vous m'expliquer ce que vous faites avec ça: minutes = minutes <10? '0' + minutes: minutes;
Balz
2
@Balz Si les minutes sont inférieures à 10 (par exemple 16:04), alors cette instruction ajoute la chaîne "0" de sorte que la sortie formatée soit "4:04 PM" au lieu de "4: 4 PM". Notez que dans le processus, les minutes passent d'un nombre à une chaîne.
Caleb Bell
7
Je préfère cela minutes = ('0'+minutes).slice(-2);plutôt que minutes = minutes < 10 ? '0'+minutes : minutes;
Vignesh
1
La solution @Vignesh pour les minutes est meilleure car si vous faites celle suggérée, 21:00:00 devient 9: 000. Vignesh's vous donne les bonnes minutes comme: 00. Si vous deviez utiliser la solution ci-dessus, vous devrez également prendre en compte le 00. (minutes> 0 && minutes <10)? '0' + minutes: minutes;
Robbie Smith
201
Si vous voulez juste montrer les heures alors ..
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
Les gens n'utilisent pas assez Regex. Cela a fonctionné pour moi sans ajouter les suggestions de bibliothèque jquery / microsoftajax ci-dessus.
uadrive
Quelle serait l'expression rationnelle d'avoir un zéro de fin au début de l'heure si c'était un seul chiffre. Disons que dans votre premier exemple de 20h12, il serait 20h12?
RADXack
1
@ 404 c'est la même chose, ([\d]+:[\d]{2})c'est la partie qui nous intéresse. Utilisez les deux points (:) comme séparateur et nous voyons que la première partie est [\d]+. Le plus signifie un ou plusieurs. Il recherche donc un ou plusieurs chiffres (y compris zéro. Si vous deviez garantir qu'un zéro est là, ce serait (0[\d]:[\d]{2}). Cela se lit maintenant, recherchez 0 plus un autre chiffre, puis deux-points, puis le reste.
Steve Tauber
1
console.log (new Date (). toLocaleTimeString (). replace (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 ")); Pour obtenir l'heure actuelle
mujaffars
35
Si vous n'avez pas besoin d'imprimer le matin / après-midi, j'ai trouvé ce qui suit agréable et concis:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
@koolinc pour minuit, il affiche 12. Je ne sais pas quel serait le comportement souhaité.
rattray
Je me suis trompé. Dans mon pays, l'horloge de 24 heures est utilisée, donc je ne connais pas très bien l'horloge de 12 heures. En effet, minuit est 00h00.
KooiInc le
16
Pour autant que je sache, la meilleure façon d'y parvenir sans extensions et codage complexe est la suivante:
<!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>
Doit être inférieur ou égal à pour le calcul des heures, sinon midi apparaît comme 0. Donc: var hour = (d.getHours () <= 12). Il y a toujours un problème avec minuit, vous devez donc vérifier si zéro, puis régler à 12 également.
cela ne fonctionne pas sur les derniers navigateurs safari et firefox, l'heure utilise toujours le format 24 heures
euther
1
les réponses deviennent obsolètes au fil du temps. N'hésitez pas à éditer et mettre à jour!
Geo
En fait, cela ressemblera à la chaîne 1:54 PM CDT. Pour supprimer la CDTmodification de votre regex aux éléments suivants .replace(/:\d+ |\CDT/g, ' '). Bien que, CDT soit juste mon fuseau horaire. Si vous avez un fuseau horaire différent, je suppose que vous devrez modifier ce code de zone.
sadmicrowave
La sortie de toLocaleTimeString dépend de l'implémentation, donc pas de manière fiable le même format partout.
RobG
9
Dans les navigateurs modernes, utilisez Intl.DateTimeFormatet forcez le format 12 heures avec des options:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
L'utilisation defaulthonorera les paramètres régionaux par défaut du navigateur si vous ajoutez plus d'options, mais affichera toujours le format 12 heures.
vous pouvez déterminer am ou pm avec ce code simple
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>
Ceci est une erreur. Les heures pourraient être supérieures à 12.
Utsav T
A 12h00, la var ampm sera "pm". Par conséquent, de 12 h 00 à 23 h 00, les heures seront de 12 h à 23 h et stockeront la valeur «pm» et pour les autres, var ampm stockera la valeur «am». J'espère que tu as compris.
Md Juyel Rana
Salut Juyel! En effet lorsque les heures sont supérieures à 12, la valeur serait PM. Mais la question est "Comment affichez-vous le datetime JavaScript au format 12 heures AM / PM?" - vous devez aider OP à convertir tout le temps au format AM / PM. Par exemple, 14h30 serait 14h30.
WARNING: toLocaleTimeString() may behave differently based on region / location.
Mesurez deux fois, coupez une fois.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.
Cette question est probablement mieux posée sur Google, cependant.Réponses:
la source
minutes = ('0'+minutes).slice(-2);
plutôt queminutes = minutes < 10 ? '0'+minutes : minutes;
Si vous voulez juste montrer les heures alors ..
Sortie: 7 h
Si vous souhaitez également afficher les minutes, alors ...
Sortie: 7h23
la source
toLocaleString
n'est pris en charge que sur IE11 +.'numeric'
avec'2-digit'
.Vous pouvez également envisager d'utiliser quelque chose comme date.js :
la source
Voici une façon d'utiliser regex:
Cela crée 3 groupes correspondants:
([\d]+:[\d]{2})
- Heure: minute(:[\d]{2})
- Secondes(.*)
- l'espace et la période (la période est le nom officiel pour AM / PM)Il affiche ensuite les 1er et 3e groupes.
AVERTISSEMENT: toLocaleTimeString () peut se comporter différemment selon la région / l'emplacement.
la source
([\d]+:[\d]{2})
c'est la partie qui nous intéresse. Utilisez les deux points (:) comme séparateur et nous voyons que la première partie est[\d]+
. Le plus signifie un ou plusieurs. Il recherche donc un ou plusieurs chiffres (y compris zéro. Si vous deviez garantir qu'un zéro est là, ce serait(0[\d]:[\d]{2})
. Cela se lit maintenant, recherchez 0 plus un autre chiffre, puis deux-points, puis le reste.Si vous n'avez pas besoin d'imprimer le matin / après-midi, j'ai trouvé ce qui suit agréable et concis:
Ceci est basé sur la réponse de @ bbrame.
la source
Pour autant que je sache, la meilleure façon d'y parvenir sans extensions et codage complexe est la suivante:
Format Javascript AM / PM
J'ai trouvé cette vérification de cette question.
Comment utiliser .toLocaleTimeString () sans afficher les secondes?
la source
Ma suggestion est d'utiliser moment js pour le fonctionnement de la date et de l'heure.
https://momentjs.com/docs/#/displaying/format/
la source
Veuillez trouver la solution ci-dessous
la source
utilisation
dateObj.toLocaleString([locales[, options]])
Option 1 - Utilisation des paramètres régionaux
Option 2 - Utilisation des options
Remarque: pris en charge sur tous les navigateurs, mais safari atm
la source
RegExp court pour en-US:
la source
1:54 PM CDT
. Pour supprimer laCDT
modification de votre regex aux éléments suivants.replace(/:\d+ |\CDT/g, ' ')
. Bien que, CDT soit juste mon fuseau horaire. Si vous avez un fuseau horaire différent, je suppose que vous devrez modifier ce code de zone.Dans les navigateurs modernes, utilisez
Intl.DateTimeFormat
et forcez le format 12 heures avec des options:L'utilisation
default
honorera les paramètres régionaux par défaut du navigateur si vous ajoutez plus d'options, mais affichera toujours le format 12 heures.la source
Utilisez Moment.js pour cela
Utilisez les codes ci-dessous en JavaScript lors de l'utilisation de moment.js
La
format()
méthode renvoie la date dans un format spécifique.la source
Découvrez Datejs . Leurs formateurs intégrés peuvent le faire: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
C'est une bibliothèque très pratique, surtout si vous prévoyez de faire d'autres choses avec des objets de date.
la source
Je trouve que c'est ici que ça fonctionne bien.
et exemple de plongeur ici
la source
la source
Voici une autre façon simple et très efficace:
la source
vous pouvez déterminer am ou pm avec ce code simple
la source
la source
la source
la source
Voici ma solution
la source
Ou faites simplement le code suivant:
la source
Une mise en œuvre courte et douce:
la source
essaye ça
la source