日期 - 毫秒格式化

本贴最后更新于 1582 天前,其中的信息可能已经水流花落

2019-12-20

描述

根据给定的毫秒数,返回人类可读的格式。

提示

  • ms 除以适当的值,以得到适当的 dayhourminutesecondmillisecond
  • 使用 Object.entries()Array.prototype.filter() 过滤出非零值* 使用 Array.prototype.map() 为每一个值创建一个字符串,并为复数添加 s
  • 使用 String.prototype.join(', ') 将值合并为一个字符串

代码

const formatDuration = ms => {
  if (ms < 0) ms = -ms;
  const time = {
    day: Math.floor(ms / 86400000),
    hour: Math.floor(ms / 3600000) % 24,
    minute: Math.floor(ms / 60000) % 60,
    second: Math.floor(ms / 1000) % 60,
    millisecond: Math.floor(ms) % 1000
  };
  return Object.entries(time)
    .filter(val => val[1] !== 0)
    .map(([key, val]) => `${val} ${key}${val !== 1 ? 's' : ''}`)
    .join(', ');
};

示例

对给定的毫秒进行格式化:

formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574); // '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'

返回总目录

每天 30 秒系列之 JavaScript 代码

  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 3 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    710 引用 • 1173 回帖 • 175 关注
  • 代码
    459 引用 • 591 回帖 • 8 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Lee981265 1

    补充几个方法

     format: function( times ){
                Date.prototype.Format = function(fmt)   
                    { 
                    var o = {   
                        "M+" : this.getMonth()+1,                 //月份   
                        "d+" : this.getDate(),                    //日   
                        "h+" : this.getHours(),                   //小时   
                        "m+" : this.getMinutes(),                 //分   
                        "s+" : this.getSeconds(),                 //秒   
                        "q+" : Math.floor((this.getMonth()+3)/3), //季度   
                        "S"  : this.getMilliseconds()             //毫秒   
                    };   
                    if(/(y+)/.test(fmt))   
                        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
                    for(var k in o)   
                        if(new RegExp("("+ k +")").test(fmt))   
                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
                    return fmt;   
                }  
    
               return times.format("yyyy-MM-dd");  
    
      },
      
      
      formatDate: function( times ){ 
                    let date = new Date( times),
                        Y = date.getFullYear() + '-',
                        M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-',
                        D = date.getDate() < 10 ? '0'+ date.getDate() + ' ' : date.getDate() + ' ' ,
                        H = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':' ,
                        MS = date.getMinutes() <10 ? '0' + date.getMinutes() + ':' :date.getMinutes() + ':',
                        S = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); 
                    return Y+M+D+H+MS+S 
            },
    
    moment(new Date(times)).format('YYYY-MM-DD HH:mm:ss');
    
    1 回复
  • Vanessa

    Day.js 也不错

Vanessa
我们终此一生,就是要摆脱他人的期待,找到真正的自己。 北京