🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 链滴笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

日期 - 毫秒格式化

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 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

推荐阅读
2 评论
Lee981265 • 2019-12-26
回复 删除

补充几个方法

 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');
Vanessa • 2019-12-26
回复 删除

Day.js 也不错