在不同的时间单位之间转换人体字符串时间

时间:2017-09-17 09:18:51

标签: javascript node.js time

您是否知道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

或者仅仅使用片刻可以做到这一点吗?请记住,我并不关心实际的日期或时间 - 我只想将单位转换与人类可读单元混合在一起。

提前致谢。

2 个答案:

答案 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'