J’utilise html 5 input element avec type=time
. Le problème est qu’il montre l’heure avec 12 hours
mais je veux qu’il montre dans 24 hours
par jour. Comment puis-je atteindre 24 heures? Voici mon champ de saisie
DEMO
Voici jsfiddle
Celui-ci est le plus simple des types de date / heure, permettant à l’utilisateur de sélectionner une heure sur une horloge de 24 heures , sans AM ou PM . La valeur renvoyée est les heures: minutes qui ressembleront à 14:30.
Avec les brouillons HTML5, input type=time
crée un contrôle pour l’heure de la saisie du jour, qui devrait être implémenté à l’aide de «la présentation préférée de l’utilisateur». Mais cela signifie vraiment utiliser un widget où la présentation du temps suit les règles de l’ environnement local du navigateur . Ainsi, indépendamment de la langue du contenu environnant, la présentation varie selon la langue du navigateur, la langue du système d’exploitation sous-jacent ou les parameters régionaux du système (selon le navigateur). Par exemple, en utilisant une version en langue finnoise de Chrome, le widget utilise l’horloge standard de 24 heures. Votre kilométrage variera.
Ainsi, input type=time
est basé sur une idée de localisation qui élimine tout ce qui échappe à l’auteur de la page. C’est intentionnel le problème a été soulevé dans les discussions HTML5 à plusieurs resockets, avec le même résultat: pas de changement. (Sauf éventuellement clarifications apscopes au texte, ce comportement étant décrit comme prévu.)
Notez que les atsortingbuts de pattern
et d’ placeholder
ne sont pas autorisés dans input type=time
. Et placeholder="hrs:mins"
, s’il était implémenté, serait potentiellement trompeur. Il est fort possible que l’utilisateur doive taper 12.30 (avec un point) et non 12h30, lorsque les parameters régionaux du navigateur utilisent «.» Comme séparateur dans les temps.
Ma conclusion est que vous devez utiliser input type=text
, avec l’atsortingbut pattern
et avec un code JavaScript qui vérifie que l’entrée est correcte sur les navigateurs qui ne prennent pas en charge l’atsortingbut pattern
mode natif.
Cela dépend des parameters de l’heure de votre système local, faites 24 heures, il vous montrera 24 heures.
Cela dépend du format de l’heure du système d’exploitation de l’utilisateur lorsque le navigateur Web a été lancé .
Alors:
comme --:--
(plage de temps: 00: 00–23: 59). --:-- --
(plage de temps: 12h00-23h59). Et (au moment d’écrire ces lignes ), la prise en charge du navigateur est seulement d’environ 75% ( caniuse ). Yay: Edge, Chrome, Opera, Android. Boo: IE, Firefox, Safari).
Le support de ce type est encore très pauvre. Opera le montre comme vous le souhaitez. Chrome 23 le montre avec les secondes et AM / PM, dans la version 24 (twig dev à ce moment), il se débarrassera des secondes (si possible), mais aucune information sur AM / PM.
Ce n’est pas ce que vous voulez, mais à ce stade, la seule option que je vois pour obtenir votre format de sélecteur de temps est l’utilisation de JavaScript.
Si vous êtes capable / désireux d’utiliser un composant minuscule, j’ai écrit ce Timepicker – https://github.com/jonataswalker/timepicker.js – pour mes propres besoins.
L’utilisation est comme ceci:
var timepicker = new TimePicker('time', { lang: 'en', theme: 'dark' }); var input = document.getElementById('time'); timepicker.on('change', function(evt) { var value = (evt.hour || '00') + ':' + (evt.minute || '00'); evt.element.value = value; });
body { font: 1.2em/1.3 sans-serif; color: #222; font-weight: 400; padding: 5px; margin: 0; background: linear-gradient(#efefef, #999) fixed; } input { padding: 5px 0; font-size: 1.5em; font-family: inherit; width: 100px; }
HTML fournit uniquement input type="time"
Si vous utilisez bootstrap, vous pouvez utiliser timepicker. Vous pouvez obtenir le code de cette URL http://jdewit.github.io/bootstrap-timepicker Peut-être que cela vous aidera
Même si vous voyez le temps au format HH: MM AM / PM, sur le backend, il fonctionne toujours au format 24 heures, vous pouvez essayer d’utiliser un javascript de base pour voir cela.
vous pouvez essayer cela pour le côté html
Côté JavaScript
function addMinutes(time/*"hh:mm"*/, minsToAdd/*"N"*/) { function z(n) { return (n<10? '0':'') + n; } var bits = time.split(':'); var mins = bits[0]*60 + (+bits[1]) + (+minsToAdd); return z(mins%(24*60)/60 | 0) + ':' + z(mins%60); } $scope.ChangeTime=function() { var d = new Date($scope.time); var hours=d.getHours(); var minutes=Math.round(d.getMinutes()); var ampm = hours >= 12 ? 'PM' : 'AM'; var Time=hours+':'+minutes; var DisplayTime=addMinutes(Time, duration); $scope.displayTime=Time+' - '+DisplayTime +' '+ampm; }