将时间xx:xxam或xx:xxpm转换为ISOString

时间:2017-07-04 05:06:55

标签: javascript date time momentjs

是否有知道将10:12am和/或12:10pm转换为ISOString格式的方法?

到目前为止,我试图检测时间是am还是pm,然后删除最后2个字符。之后,我只需添加新的日期字符串,如:

export function timeAMPMToISO(time) {
    var newTime = time.slice(0, -2)
    var isAmPm = time.substr(-2)
    var h = parseInt(newTime.split(':')[0])
    var m = newTime.split(':')[1]
    var date = new Date().toISOString().substring(0, 11);
    if(isAmPm === 'pm'){
        if(h === 12){
            h = h
        }else{
            h += 12
        }
    }
    h = (isAmPm === 'am' && h === 12) ? '00' : h;
    return `${ date }${ h }:${ m }:00.000Z`;
}

我觉得这不正常。

这是否有现有的库?也许MomentJs?如果是这样,怎么样?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用moment (String, String)解析输入,然后使用toISOString()

您的代码可能如下所示:

moment('10:12am', 'hh:mma').toISOString()

hh令牌匹配1-12小时,mm匹配0-59分钟,a匹配上午/下午