代码之家  ›  专栏  ›  技术社区  ›  LeBlaireau

Javascript格式化时间-日期fns

  •  0
  • LeBlaireau  · 技术社区  · 6 年前

    我有一个以分钟为单位的时间

    01:30:00
    

    我想把它显示为一个很好的人类可读的1小时30分钟或90分钟。

    实现这一目标的最佳方法是什么?我使用Date fns作为日期,但无法让getminutes()方法按预期的完整日期工作。

    https://date-fns.org/v1.28.0/docs/getMinutes .

    3 回复  |  直到 6 年前
        1
  •  1
  •   Alvaro Alves    6 年前

    检查这是否有助于您:

    JS公司:

    String.prototype.toHHMM = function () {
    var sec_num = parseInt(this, 10); 
    var hours   = Math.floor(sec_num / 3600);
    var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
    var seconds = sec_num - (hours * 3600) - (minutes * 60);
    
    if (hours   < 10) {hours   = "0"+hours;}
    if (minutes < 10) {minutes = "0"+minutes;}
    if (seconds < 10) {seconds = "0"+seconds;}
    return hours+'hr(s) '+minutes+' minutes';
    

    }

    然后:

    alert('013000'.toHHMM());
    

    https://codepen.io/alvaro-alves/pen/pZLwOd 您只需从time中删除“:”。

        2
  •  1
  •   Ankit    6 年前
    let stringTime = '1:30:20';
    
    let date = new Date (null, null, null, parseInt (stringTime.split(':')[0]), parseInt (stringTime.split(':')[1]), parseInt (stringTime.split(':')[2]));
    
    let readiableTime = (((date.getHours()) ? date.getHours() + 'H' : '') + ' ' + (date.getMinutes() ? date.getMinutes() + 'm' : '')).trim();
    
    console.log (readiableTime);
    

    答:1小时30米

        3
  •  0
  •   RobG    6 年前

    您只需使用适当的方法拆分成部分和格式即可。您在解析器/格式化程序中构建了多少功能取决于您要支持多少种不同的输入和输出格式。

    您可以编写一个更通用的解析器/格式化程序,但是如果您只需要支持一种格式,那么应该做一些简单的事情,例如。

    function formatTime(v) {
      var [h,m,s] = v.split(':').map(Number);
      return (h? h + ' hour' + (h != 1? 's' : '') : '') + 
             (m? ' ' + m + ' minute' + (m != 1? 's' : '') : '') +
             (s? ' ' + s + ' second' + (s != 1? 's' : '') : '');
    }
    
    ['01:30:00', '21:01:05', '00:10:01', '16:00:08'].forEach(v =>
      console.log(v + ' => ' + formatTime(v))
    );