您是否知道npm模块能够将人体字符串时间转换为天,小时,秒或毫秒,最好使用moment.js时间单位?
这有点难以解释,所以这里有几个例子:
'1小时'到分钟= 60
'2天'到秒= 172800
'60秒'到分钟= 1
'30分钟'到秒= 1800
使用短手同上:
' 1 H'到分钟= 60
' 2D'到秒= 172800
' 60'到分钟= 1
'30米'到秒= 1800
这些是moment.js
使用的字符串单位Key Shorthand
----------------------
years y
quarters Q
months M
weeks w
days d
hours h
minutes m
seconds s
milliseconds ms
或表示为功能:
const convertUnits = (input, format) => {
// Implementation
};
convertUnits('1hours', 'minutes') // 60
convertUnits('1h', 'm') // 60
或者仅仅使用片刻可以做到这一点吗?请记住,我并不关心实际的日期或时间 - 我只想将单位转换与人类可读单元混合在一起。
提前致谢。
答案 0 :(得分:1)
我最终使用了以下内容:
import * as _ from 'lodash'
import moment from 'moment'
import momentDurationFormat from 'moment-duration-format'
export const convertTime = (time, format = 's') => {
if(!_.isString(time) || !_.isString(format)){
return 0;
}
const components = time.trim().split(/(\d+)/);
const digits = parseInt(components[1]);
const unit = components[2];
return moment
.duration(digits, unit)
.format(format);
};
答案 1 :(得分:0)
尝试使用timestring库。它将人类可读的时间字符串解析为基于时间的值(默认为秒)。如我所见,它可以满足您的所有需求:
const timestring = require('timestring')
let str = '1d 3h 25m 18s'
let time = timestring(str)
console.log(time) // will log 98718
str
输入参数可以设置为不带空格,例如'1d3h25m18s'