web-dev-qa-db-fra.com

Comment convertir des minutes en heures/minutes et ajouter différentes valeurs de temps en utilisant jQuery?

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? 

48
sevens

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);    

});
90
nunopolonia

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}`;
}
48
ConorLuddy

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"
19
Dan S.
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 ...

5
Maxwelll
function parseMinutes(x){hours=Math.floor(x/60); minutes=x% 60;}
function parseHours(H,M){x=M+H*60;}
5
Malk

???? 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}`;
  }
}
0
Spittal

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.

0
Jon McAuliffe

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;
  }
}
0
Jarkko Oksanen

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"

0
kostest kaptest