【问题标题】:How to convert minutes to hours/minutes and add various time values together using jQuery?如何使用 jQuery 将分钟转换为小时/分钟并添加各种时间值?
【发布时间】:2011-06-08 22:23:15
【问题描述】:

这个问题有几个部分。如果有人知道可以完成我想做的事情,我不反对使用 jQuery 插件。

Q1 - 如何将分钟转换为小时,反之亦然?例如,我如何将 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

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 与 PM?

【问题讨论】:

标签: javascript jquery time


【解决方案1】:

第一季度:

$(document).ready(function() {
    var totalMinutes = $('.totalMin').html();

    var hours = Math.floor(totalMinutes / 60);          
    var minutes = totalMinutes % 60;

    $('.convertedHour').html(hours);
    $('.convertedMin').html(minutes);    
});

第二季度:

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

});

【讨论】:

  • ? const convert = (n) =&gt; `0${n / 60 ^ 0}`.slice(-2) + ':' + ('0' + n % 60).slice(-2)
  • @ИльяЗеленько 就像一个魅力!不知道为什么,但谁在乎?!谢谢:)
  • @Илья Зеленько 提供的答案同时简洁、简短、优雅。
  • @kernelpanic,代码的可读性/可理解性比简洁更重要
【解决方案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 版本:)

const convertMinsToHrsMins = (mins) => {
  let h = Math.floor(mins / 60);
  let m = mins % 60;
  h = h < 10 ? '0' + h : h; // (or alternatively) h = String(h).padStart(2, '0')
  m = m < 10 ? '0' + m : m; // (or alternatively) m = String(m).padStart(2, '0')
  return `${h}:${m}`;
}

【讨论】:

  • 这是我最喜欢的答案,因为它解决了“00:00”格式
  • const convert = (n) =&gt; `0${n / 60 ^ 0}`.slice(-2) + ':' + ('0' + n % 60).slice(-2)
  • 这只是普通的 JavaScript @sam - 如果没有我会担心的:D
  • 致一直建议编辑以在mins % 60 上使用 floor 的人 - mins 将是一个整数,因此没有必要为此设置 floor。
【解决方案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"

【讨论】:

  • ..这是2015年新增的方法 代替2015版本号应该更清晰舒服.谢谢。
  • 这种格式在任何地方都有用吗?缺乏一致的 HH:MM 格式肯定会使其毫无用处。
  • @Leonard -- 解决方案与上述问题有关。如果给定分钟,此函数可用于返回小时数和任何剩余的分钟数。还有很多其他用例,但这不是列出每个用例的地方,只是适用于上述问题的一个。
  • @Leonard -- 该问题不需要 HH:MM 格式;即使需要,上面也有一个答案显示如何转换为 HH:MM 格式。
  • @DanS。在没有我之前工作的背景的情况下返回,现在变得如此明显!我当时一定是被自己的使命蒙蔽了双眼。干杯丹!
【解决方案4】:

? 非常短的代码,用于以两种格式传输分钟!

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 插件...

    【讨论】:

      【解决方案6】:
      function parseMinutes(x) {
        hours = Math.floor(x / 60);
        minutes = x % 60;
      }
      
      function parseHours(H, M) {
        x = M + H * 60;
      }
      

      【讨论】:

      • 只是将几行代码转储到文本框中并不能使其成为答案。
      【解决方案7】:

      我冒昧地修改了 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}`;
        }
      }
      

      【讨论】:

        【解决方案8】:

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

        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。应该重写几行以使其准确。
        【解决方案9】:

        由于 ConnorLuddy 的上述答案可以稍微改进,因此将公式转换为 hours:mins 格式的公式略有变化

        const convertMinsToHrsMins = (mins) => {
          let h = Math.floor(mins / 60);
          let m = Math.round(mins % 60);
          h = (h < 10) ? ('0' + h) : (h);
          m = (m < 10) ? ('0' + m) : (m);
          return `${h}:${m}`;
        }
        

        我的理论是我们无法预测 `mins` 值将始终为整数。
        添加到函数中的“Math.round”将更正输出。
        例如:当分钟=125.3245 时,使用此修复程序的输出将是 02:05,而没有修复程序的输出将是 02:05.3245000000000005。

        希望有人需要这个!

        【讨论】:

          【解决方案10】:

          不是 jquery 插件,但 DateJS Library 似乎可以满足您的要求。 Getting Started page 有很多例子。

          【讨论】:

          • 严重吗?这不是问题的答案!为什么不展示如何使用 DateJS?
          【解决方案11】:

          交替支持旧版浏览器。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-14
            • 1970-01-01
            • 2015-05-18
            • 1970-01-01
            • 2014-12-01
            • 2015-07-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多