2011-01-14 14 views
33

Istnieje kilka części tego pytania. Nie jestem przeciwny używaniu wtyczki jQuery, jeśli ktoś wie o jednym, który wykona to, co chcę zrobić.Jak przekonwertować minuty na godziny/minuty i razem dodać różne wartości czasu za pomocą jQuery?

Q1 - Jak przeliczać minuty na godziny i na odwrót? Na przykład, w jaki sposób mogę przekonwertować 90 minut na 1 godzinę i 30 minut. W poniższym kodzie jak uzyskać "totalMin" przekonwertowane i wyświetlane w "convertHour" i "convertMin"?

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 - Jak bym dodać grupa szczelin czasowych? Na przykład: Jak dodać 1 godzinę 30 minut, 2 godziny 45 minut i 2 godziny 15 minut razem?

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 - Jak wziąłbym wartość czasu (3 godziny i 30 minut) i dodać go do prawdziwego stemplem czasowym takiego jak 10: 30 rano? Jak wziąłbym pod uwagę AM vs PM?

+0

Dzięki za wgląd, Mark. Oczywiście proszę o pomoc przy kodzie, żeby to zrobić. – sevens

+5

http://www.doxdesk.com/img/updates/20091116-so-large.gif – goat

Odpowiedz

71

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

}); 
+0

Dzięki, nunoplonia. To działało idealnie. – sevens

0

Nie jest to wtyczka jquery, ale DateJS Library wydaje się robić to, czego potrzebujesz. Getting Started page ma wiele przykładów.

+0

Dzięki, sprawdzę to. – sevens

+8

Poważne? To nie jest odpowiedź na problem! Dlaczego nie pokazujesz, jak zrobić z DateJS? –

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

Samo wyrzucenie kilku linii kodu do pola tekstowego nie sprawia, że ​​jest to odpowiedź. –

+0

Cieszę się, że Ci się podoba :) –

3
var timeConvert = function(n){ 
var minutes = n%60 
var hours = (n - minutes)/60 
console.log(hours + ":" + minutes) 
} 
timeConvert(65) 

będzie log 1: 5 do konsoli. Jest to krótkie i proste rozwiązanie, które powinno być łatwe do zrozumienia i nie jest wymagana żadna wtyczka jquery ...

14

Poniższa funkcja przyjmie jako wejście # minut i czas wyjściowy w następującym formacie: godziny: minuty. Użyłem Math.trunc(), która jest nową metodą dodaną w 2015 roku. Zwraca ona integralną część liczby przez usunięcie jakichkolwiek cyfr ułamkowych.

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" 
+0

_ .. która jest nową metodą dodaną w 2015 r. Zamiast tego ** 2015 **, ** numer wersji ** powinna być bardziej przejrzysta i wygodna. Dziękuję Ci. – fWd82

+0

Czy są jakieś zastosowania tego formatu w dowolnym miejscu? Brak spójnego formatu HH: MM sprawia, że ​​jest to bezużyteczne. – Leonard

+1

@Leonard - Rozwiązanie dotyczy powyższego pytania. Ta funkcja może służyć do zwracania godzin i pozostałych minut, jeśli podane są minuty. Istnieje wiele innych przypadków użycia, ale nie jest to miejsce, w którym można wymienić wszystkie przypadki użycia, tylko te, które dotyczą powyższego pytania. –

22

W przypadku, gdy chcesz powrócić ciąg w formacie 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; 
} 

Dzięki za up-głosów. Oto nieco porządniej wersja ES6 :)

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}`; 
} 
+2

To jest moja ulubiona odpowiedź, ponieważ dotyczy formatu "00:00" –

+0

Cieszę się, że Ci się podoba :) – ConorLuddy

0

Pozwoliłem sobie modyfikowania odpowiedź ConorLuddy do zajęcia zarówno czas 24 godzin i 12 godzinny czas.

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}`; 
    } 
} 
Powiązane problemy