这个需求确实有点奇葩了...

2022-12-02 11:13:54 浏览数 (1)

大家好,我是前端实验室的大师兄!

相信大家都听说过 day.js 这些时间转换工具,一般的时间格式转换它都能处理,但是总有那些不按套路出牌的设计,非要把时间段转化为毫秒,什么2天转化为毫秒,俩小时转化为毫秒,各种格式都要转化为毫秒

奇葩需求年年有,尤其今年特别多

今天就给大家推荐一个毫秒转化工具ms

ms

从它的命名就可以看出它的专一性和特点:可以轻松地将各种时间格式转换为毫秒。

特点

  • 支持 TypeScript
  • 适用于Node.js和浏览器
  • 如果提供带数字的ms,则返回带有单位的字符串
  • 如果提供了包含数字的字符串,则将其作为数字返回(例如:100返回'100')
  • 如果您传递带有数字和有效单位的字符串,则返回等效毫秒数

使用

安装

代码语言:javascript复制
npm i ms

使用:

如果你使用TypeScript开发,可以从ms里直接导出数据类型,使用一个类型断言来强制一个string

代码语言:javascript复制
import ms, { StringValue } from 'ms';

// 使用导出的类型
function example(value: StringValue) {
  ms(value);
}

// 此函数只接受与“ms”兼容的字符串
example('1 h');

各种类型时间转化为毫秒

代码语言:javascript复制
ms('2 days')  // 172800000
ms('1d')      // 86400000
ms('10h')     // 36000000
ms('2.5 hrs') // 9000000
ms('2h')      // 7200000
ms('1m')      // 60000
ms('5s')      // 5000
ms('1y')      // 31557600000
ms('100')     // 100
ms('-3 days') // -259200000
ms('-1h')     // -3600000
ms('-200')    // -200

也可以把毫秒转化为时间

代码语言:javascript复制
//返回缩写结果
ms(60000)             // "1m"
ms(2 * 60000)         // "2m"
ms(-3 * 60000)        // "-3m"
ms(ms('10 hours'))    // "10h"

//传入一个参数,返回完整结果
ms(60000, { long: true })             // "1 minute"
ms(2 * 60000, { long: true })         // "2 minutes"
ms(-3 * 60000, { long: true })        // "-3 minutes"
ms(ms('10 hours'), { long: true })    // "10 hours"

github链接:https://github.com/vercel/ms

最后

欢迎加入前端实验室读者交流群,群里有不少技术大神,不定时会分享一些技术要点,更有一些资源收藏爱好者会分享一些优质的学习资料。吃瓜、摸鱼、白嫖技术就等你了~

进群方式:在下方公众号后台,回复 111 ,按提示操作即可进群。

0 人点赞