使用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
提前感谢您的帮助。
答案 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)/, '');
}
现在它应该适用于所有字符串。