如何使用jQuery将分钟转换为小时/分钟并添加各种时间值?


70

这个问题有两个部分。我不反对使用jQuery插件(如果有人知道可以实现我想要完成的任务)。

问题1-如何将分钟数转换为小时数,反之亦然?例如,我如何将90分钟转换为1小时30分钟。在下面的代码中,如何转换“ totalMin”并在“ convertedHour”和“ convertedMin”中显示?

HTML:

<span class="totalMin">90</span> Minutes

<span class="convertedHour">0</span> Hours
<span class="convertedMin">0</span> Minutes

jsFiddle:http : //jsfiddle.net/ExFBD

问题2-如何合并一组时隙?例如,如何将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/

问题3-如何获取时间值(3小时30分钟)并将其添加到实时时间戳(例如上午10:30)?我将如何考虑上午与下午?


感谢您的见解,马克。我显然是在寻求代码帮助。
七人榄球赛

Answers:


123

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

});

4
👍const convert = (n) => `0${n / 60 ^ 0}`.slice(-2) + ':' + ('0' + n % 60).slice(-2)
ИльяЗеленько18年

@ИльяЗеленько就像一个魅力!不知道为什么,但是谁在乎呢?谢谢:)
Ado Ren

@ИльяЗеленько提供的答案同时简洁,简短而优雅。
kernelpanic

@kernelpanic,对代码而言,可读性/可理解性比简洁性更为重要
Michael Freidgeim

73

如果您想返回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版本:)

const 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}`;
}

5
这是我最喜欢的答案,因为它解决了“ 00:00”格式
Kar.ma,2016年

const convert = (n) => `0${n / 60 ^ 0}`.slice(-2) + ':' + ('0' + n % 60).slice(-2)
ИльяЗеленько

1
这只是普通的JavaScript @sam-我会担心它是否不是:D
ConorLuddy

21

下面的函数将以以下分钟格式作为分钟的输入#和输出时间:小时:分钟。我使用了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"

..这是2015年新增的方法,而不是2015年版本号应该更清晰,更舒适。谢谢。
fWd82

1
这种格式在任何地方都有用吗?缺少一致的HH:MM格式肯定会使其毫无用处。
伦纳德

1
@Leonard-解决方案与上述问题有关。此功能可用于返回小时数和剩余的分钟数(如果有分钟数的话)。还有许多其他用例,但这并不是列出每个用例的地方,而只是列出适用于上述问题的用例。
Dan S.

1
@Leonard-该问题不需要HH:MM格式;即使需要,在上方也有一个答案,显示了如何转换为HH:MM格式。
Dan S.

@丹 返回之前没有我正在做的事情的上下文,现在是如此明显!当时我一定对自己的任务视而不见。干杯丹!
伦纳德

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"


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

这将以1:5记录到控制台。这是一个简短的解决方案,应该易于理解,并且不需要jquery插件...


5
function parseMinutes(x) {
  hours = Math.floor(x / 60);
  minutes = x % 60;
}

function parseHours(H, M) {
  x = M + H * 60;
}

19
仅仅将几行代码转储到文本框中并不能解决问题。
丹·阿特金森

3

我随意修改ConorLuddy的答案以解决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}`;
  }
}

2

该代码可以与时区一起使用

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"

minToHm(210)
"+3:30"

minToHm(-210)
"-3:30"

minToHm(0)
"+0:00"

这段代码有多个错误,如果您希望小时数不完美而负数分钟,或者根本不负数分钟,则我不建议您按原样使用它。-120分钟返回-1:00(错误)。-160返回+0:00(错误)。-180返回-2:00。底层存在逻辑缺陷,而增量中缺少Math.abs。应该重写几行以使其准确。
列夫


0

交替支持较旧的浏览器。

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;
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.