日期 - 毫秒格式化

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

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 引用 • 384 回帖 • 4 关注
  • JavaScript

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

    729 引用 • 1278 回帖
  • 代码
    467 引用 • 586 回帖 • 9 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 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 via macOS

    Day.js 也不错

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