从字符串转换时间

时间:2016-02-19 10:25:34

标签: javascript

使用javascript我将如何处理我需要将时间从标准格式转换为军事时间的字符串。例如,我有一个字符串:

  Example 1 __ MON-FRI 9:00am - 9:00pm SAT 9:00am - 7:00pm
  Example 2 __ MON-FRI 9:00 am - 9:00 pm SAT 9:00 am - 7:00 pm
  Example 3 __ MON-FRI 9am - 9pm SAT 9am - 7pm
  Example 4 __ MON-FRI 9 am - 9 pm SAT 9 am - 7 pm

如果我有一个高于预期输出的字符串将是: 周一至周五9:00-21:00 SAT 9:00 - 19:00

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要任何功能将时间从12h格式转换为24h格式,例如:

function convertTo24Hour(time) {
    var hours = parseInt(time.substr(0, 2));
    if(time.indexOf('am') != -1 && hours == 12) {
        time = time.replace('12', '0');
    }
    if(time.indexOf('pm')  != -1 && hours < 12) {
        time = time.replace(hours, (hours + 12));
    }
    return time.replace(/(am|pm)/, '');
}

要从字符串中提取时间,您可以使用正则表达式:

/\d+:\d+am|\d+:\d+pm/g

"MON-FRI 9:00am - 9:00pm SAT 9:00am - 7:00pm".replace(/\d+:\d+am|\d+:\d+pm/g, function (a) { return convertTo24Hour(a); });

会导致这个

MON-FRI 9:00 - 21:00 SAT 9:00 - 19:00

修改

将正则表达式模式修复为:

/\d+:?\d{0,2}\s?am|\d+:?\d{0,2}\s?pm/g

时间格式转换器功能:

function convertTo24Hour(time) {
    var hours = parseInt(time.substr(0, 2));
    if(time.indexOf('am') != -1 && hours == 12) {
        if(time.indexOf(':' == -1)) {
            time = time.replace('12', '0:00');
        }
        time = time.replace('12', '0');
    }
    if(time.indexOf('pm')  != -1 && hours < 12) {
        if(time.indexOf(':' == -1)) {
            time = time.replace(hours, (hours + 12)+':00');
        }
        time = time.replace(hours, (hours + 12));
    }    
    return time.replace(/(am|pm)/, '');
}

现在它应该适用于所有字符串。