Как конвертировать минуты в часы/минуты и добавлять различные значения времени вместе с помощью jQuery?
В этом вопросе есть пара частей. Я не против использования плагина jQuery, если кто-нибудь знает, кто выполнит то, что я хочу сделать.
Q1 - Как преобразовать минуты в часы и наоборот? Например, как бы я конвертировал 90 минут в 1 час 30 минут. В приведенном ниже коде, как бы получить "totalMin", преобразованный и отображаемый в "convertHour" и "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 - Как я могу добавить группу временных интервалов? Например, как бы добавить 1 час 30 минут, 2 часа 45 минут и 2 часа 15 минут вместе?
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 - Как я возьму значение времени (3 часа и 30 минут) и добавлю его к отметке в реальном времени, например, 10:30? Как я буду учитывать AM vs PM?
Ответы
Ответ 1
Q1:
$(document).ready(function() {
var totalMinutes = $('.totalMin').html();
var hours = Math.floor(totalMinutes / 60);
var minutes = totalMinutes % 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);
});
Ответ 2
Если вы хотите вернуть строку в формате 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;
}
Спасибо за голосование. Здесь немного более аккуратная версия 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}`;
}
Ответ 3
Функция ниже будет принимать в качестве входных данных количество минут и время вывода в следующем формате: Часы: минуты.
Я использовал Math.trunc(), который является новым методом, добавленным в 2015 году. Он возвращает неотъемлемую часть числа, удаляя любые дробные цифры.
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"
Ответ 4
function parseMinutes(x) {
hours = Math.floor(x / 60);
minutes = x % 60;
}
function parseHours(H, M) {
x = M + H * 60;
}
Ответ 5
var timeConvert = function(n){
var minutes = n%60
var hours = (n - minutes) / 60
console.log(hours + ":" + minutes)
}
timeConvert(65)
это будет записывать 1: 5 в консоль. Это краткое и простое решение, которое должно быть легко понятным и не требуется плагин jquery...
Ответ 6
👍 Очень короткий код для перевода минут в двух форматах!
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"
Ответ 7
Я взял на себя смелость изменить ответ Конор-Лудди на 24-часовое время и 12-часовое время.
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}`;
}
}
Ответ 8
Не плагин jquery, но DateJS Library работает так, как вам нужно. На странице Начало работы приведено несколько примеров.
Ответ 9
Чередуется для поддержки старых браузеров.
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;
}
}
Ответ 10
Этот код можно использовать с часовым поясом
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;
}
console.log(minToHm(210)) // "+3:30"
console.log(minToHm(-210)) // "-3:30"
console.log(minToHm(0)) // "+0:00"