Il y a plusieurs parties à cette question. Je ne suis pas opposé à l'utilisation d'un plugin jQuery si quelqu'un en connaît un qui accomplira ce que je veux faire.
Q1 - Comment convertir des minutes en heures et inversement? Par exemple, comment convertir 90 minutes en 1 heure et 30 minutes? Dans le code ci-dessous, comment puis-je convertir "totalMin" et l'afficher en "heures converties" et "converties en minutes"?
HTML:
<span class="totalMin">90</span> Minutes
<span class="convertedHour">0</span> Hours
<span class="convertedMin">0</span> Minutes
jsFiddle: http://jsfiddle.net/ExFBD
Q2 - Comment pourrais-je additionner un groupe de créneaux horaires? Par exemple, comment ajouter 1 heure 30 minutes, 2 heures 45 minutes et 2 heures 15 minutes ensemble?
HTML:
<span class="hour-1 hour">1</span> hour
<span class="min-1 min">30</span> min
<span class="hour-2 hour">2</span> hour
<span class="min-2 min">45</span> min
<span class="hour-3 hour">2</span> hour
<span class="min-3 min">15</span> min
<span class="totalHour">0</span> hour
<span class="totalMin">0</span> min
jsFiddle: http://jsfiddle.net/DX9YA/
Q3 - Comment pourrais-je prendre une valeur de temps (3 heures et 30 minutes) et l'ajouter à un horodatage réel tel que 10h30? Comment pourrais-je prendre en compte AM vs PM?
Q1:
$(document).ready(function() {
var hours = Math.floor( $('.totalMin').html() / 60);
var minutes = $('.totalMin').html() % 60;
$('.convertedHour').html(hours);
$('.convertedMin').html(minutes);
});
Q2:
$(document).ready(function() {
var minutes = 0;
$('.min').each(function() {
minutes = parseInt($(this).html()) + minutes;
});
var realmin = minutes % 60
var hours = Math.floor(minutes / 60)
$('.hour').each(function() {
hours = parseInt($(this).html()) + hours;
});
$('.totalHour').html(hours);
$('.totalMin').html(realmin);
});
Si vous voulez renvoyer une chaîne au format 00:00 ...
convertMinsToHrsMins: function (minutes) {
var h = Math.floor(minutes / 60);
var m = minutes % 60;
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
return h + ':' + m;
}
Merci pour les votes positifs. Voici une version ES6 légèrement plus ordonnée :)
function convertMinsToHrsMins(mins) {
let h = Math.floor(mins / 60);
let m = mins % 60;
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
return `${h}:${m}`;
}
La fonction ci-dessous prend en entrée le nombre de minutes et le temps de sortie au format suivant: Heures: minutes. J'ai utilisé Math.trunc (), une nouvelle méthode ajoutée en 2015. Elle retourne la partie intégrale d'un nombre en supprimant les chiffres fractionnaires.
function display(a){
var hours = Math.trunc(a/60);
var minutes = a % 60;
console.log(hours +":"+ minutes);
}
display(120); //"2:0"
display(60); //"1:0:
display(100); //"1:40"
display(126); //"2:6"
display(45); //"0:45"
var timeConvert = function(n){
var minutes = n%60
var hours = (n - minutes) / 60
console.log(hours + ":" + minutes)
}
timeConvert(65)
cela enregistrera 1: 5 sur la console. C'est une solution courte et simple qui devrait être facile à comprendre et aucun plugin jquery n'est nécessaire ...
function parseMinutes(x){hours=Math.floor(x/60); minutes=x% 60;}
function parseHours(H,M){x=M+H*60;}
???? Code très court pour transférer des minutes dans deux formats!
let format1 = (n) => `${n / 60 ^ 0}:` + n % 60
console.log(format1(135)) // "2:15"
console.log(format1(55)) // "0:55"
let format2 = (n) => `0${n / 60 ^ 0}`.slice(-2) + ':' + ('0' + n % 60).slice(-2)
console.log(format2(135)) // "02:15"
console.log(format2(5)) // "00:05"
J'ai pris la liberté de modifier la réponse de ConorLuddy afin de traiter à la fois les 24 heures et 12 heures.
function minutesToHHMM (mins, twentyFour = false) {
let h = Math.floor(mins / 60);
let m = mins % 60;
m = m < 10 ? '0' + m : m;
if (twentyFour) {
h = h < 10 ? '0' + h : h;
return `${h}:${m}`;
} else {
let a = 'am';
if (h >= 12) a = 'pm';
if (h > 12) h = h - 12;
return `${h}:${m} ${a}`;
}
}
Pas un plugin jquery, mais la Bibliothèque DateJS semble faire ce dont vous avez besoin. La page Mise en route contient un certain nombre d'exemples.
Alterné pour supporter les anciens navigateurs.
function minutesToHHMM (mins, twentyFour) {
var h = Math.floor(mins / 60);
var m = mins % 60;
m = m < 10 ? '0' + m : m;
if (twentyFour === 'EU') {
h = h < 10 ? '0' + h : h;
return h+':'+m;
} else {
var a = 'am';
if (h >= 12) a = 'pm';
if (h > 12) h = h - 12;
return h+':'+m+a;
}
}
Ce code peut être utilisé avec le fuseau horaire
javascript:
let minToHm = (m) => {
let h = Math.floor(m/60);
h += (h < 0) ? 1 : 0;
let m2 = Math.abs(m%60);
m2 = (m2 < 10) ? '0'+m2 : m2;
return (h < 0 ? '' : '+')+h+':'+m2;
}
minToHm (210) "+ 3:30"
minToHm (-210) "- 15h30"
minToHm (0) "+ 0:00"