ms
可以轻松地将各种时间格式转换为毫秒。
示例
ts
import { ms } from '@mgcloud/lib-utils'
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从毫秒转换
ts
ms(60000) // "1m"
ms(2 * 60000) // "2m"
ms(-3 * 60000) // "-3m"
ms(ms('10 hours')) // "10h"完整时间格式
ts
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"输入格式(单位)
ts
type Years = 'years' | 'year' | 'yrs' | 'yr' | 'y'
type Months = 'months' | 'month' | 'mo'
type Weeks = 'weeks' | 'week' | 'w'
type Days = 'days' | 'day' | 'd'
type Hours = 'hours' | 'hour' | 'hrs' | 'hr' | 'h'
type Minutes = 'minutes' | 'minute' | 'mins' | 'min' | 'm'
type Seconds = 'seconds' | 'second' | 'secs' | 'sec' | 's'
type Milliseconds = 'milliseconds' | 'millisecond' | 'msecs' | 'msec' | 'ms'
type Unit = Years | Months | Weeks | Days | Hours | Minutes | Seconds | Milliseconds这些格式可以是小写(minutes)、大写(MINUTES)或首字母大写(Minutes)。单位前可以有空格(2 minutes)也可以没有(2minutes)。
NOTE
如果您使用 parseStrict,大小写和空格会在类型层面强制执行。
如果没有传入单位(如 2),单位将默认为毫秒(Milliseconds)。支持小数输入值,如 0.5m、-0.5m、.5m 和 -.5m。
TypeScript 支持
在大多数情况下,这不需要您做任何特殊操作,但如果需要,您也可以导入 StringValue 类型。
ts
import { ms, type StringValue } from '@mgcloud/lib-utils'
// 使用导出的类型
function example(value: StringValue) {
ms(value)
}
// 此函数只接受与 `ms` 兼容的字符串
example('1 h')在此示例中,我们使用类型断言来强制转换 string。
ts
import { ms, type StringValue } from '@mgcloud/lib-utils'
// 使用导出类型进行类型断言
function example(value: string) {
try {
// 字符串可能比 `ms` 接受的值"更宽",所以我们断言
// 我们的 `value` 是 `StringValue` 类型。
//
// 需要注意的是,这可能很危险(见下文)。
ms(value as StringValue)
} catch (error: Error) {
// 处理无效值产生的任何错误
console.error(error)
}
}
// 此函数将接受任何字符串,这可能导致错误
example('any value')您也可以创建自定义模板字面量类型。
ts
import { ms } from '@mgcloud/lib-utils'
type OnlyDaysAndWeeks = `${number} ${'days' | 'weeks'}`
// 使用自定义模板字面量类型
function example(value: OnlyDaysAndWeeks) {
// `value` 的类型比 `ms` 接受的值更窄,
// 可以安全使用而无需强制转换。
ms(value)
}
// 此函数只接受 "# days" 或 "# weeks"
example('5.2 days')高级用法
辅助函数
可以单独导入 parse 和 format。
ts
import { parse, format } from '@mgcloud/lib-utils'
parse('1h') // 3600000
format(2000) // "2s"增强类型安全
如果您想对输入值进行严格的类型检查,可以使用 parseStrict。
ts
import { parseStrict } from '@mgcloud/lib-utils'
parseStrict('1h') // 3600000
function example(s: string) {
return parseStrict(str) // tsc 错误
}导出方法
typescript
import {
ms,
parse,
parseStrict,
format,
} from '@mgcloud/lib-utils'