[英]convert 12-hour hh:mm AM/PM to 24-hour hh:mm depending on toLocaleTimeString()
[英]change time string of HH:mm am/pm to 24 hour time
我得到一個變量字符串,如下所示:
上午8:45
並希望,如果是下午,將其轉換為24小時的時間。 這樣我就可以放棄am / pm並將其與其他內容一起使用。
我可以很容易地放下上午/下午:
function replaceEnds(string) {
string = string.replace("am", "");
string = string.replace("pm", "");
return string;
}
但是當然如果我這樣做,我不知道字符串是上午還是下午,所以我不知道要在字符串上加12小時才能使它24小時。
誰知道我怎么解決這個問題? 我絕對不能改變我得到的變量輸入,它總是小時(12小時時間),分鍾,上午或下午。
使用moment.js :
moment(string, 'h:mm a').format('H:mm');
如果你想手動完成,這將是我的解決方案:
function to24Hour(str) {
var tokens = /([10]?\d):([0-5]\d) ([ap]m)/i.exec(str);
if (tokens == null) { return null; }
if (tokens[3].toLowerCase() === 'pm' && tokens[1] !== '12') {
tokens[1] = '' + (12 + (+tokens[1]));
} else if (tokens[3].toLowerCase() === 'am' && tokens[1] === '12') {
tokens[1] = '00';
}
return tokens[1] + ':' + tokens[2];
}
手動解決方案難以理解,靈活性較差,缺少一些錯誤檢查並需要單元測試。 一般來說,您通常應該選擇經過良好測試的流行庫解決方案,而不是您自己的(如果有經過良好測試的庫可用)。
不使用任何其他JavaScript庫:
/**
* @var amPmString - Time component (e.g. "8:45 PM")
* @returns - 24 hour time string
*/
function getTwentyFourHourTime(amPmString) {
var d = new Date("1/1/2013 " + amPmString);
return d.getHours() + ':' + d.getMinutes();
}
例如:
getTwentyFourHourTime("8:45 PM"); // "20:45"
getTwentyFourHourTime("8:45 AM"); // "8:45"
如果您正在尋找能夠將ANY FORMAT轉換為24小時HH:MM的解決方案。
function get24hTime(str){
str = String(str).toLowerCase().replace(/\s/g, '');
var has_am = str.indexOf('am') >= 0;
var has_pm = str.indexOf('pm') >= 0;
// first strip off the am/pm, leave it either hour or hour:minute
str = str.replace('am', '').replace('pm', '');
// if hour, convert to hour:00
if (str.indexOf(':') < 0) str = str + ':00';
// now it's hour:minute
// we add am/pm back if striped out before
if (has_am) str += ' am';
if (has_pm) str += ' pm';
// now its either hour:minute, or hour:minute am/pm
// put it in a date object, it will convert to 24 hours format for us
var d = new Date("1/1/2011 " + str);
// make hours and minutes double digits
var doubleDigits = function(n){
return (parseInt(n) < 10) ? "0" + n : String(n);
};
return doubleDigits(d.getHours()) + ':' + doubleDigits(d.getMinutes());
}
console.log(get24hTime('6')); // 06:00
console.log(get24hTime('6am')); // 06:00
console.log(get24hTime('6pm')); // 18:00
console.log(get24hTime('6:11pm')); // 18:11
console.log(get24hTime('6:11')); // 06:11
console.log(get24hTime('18')); // 18:00
console.log(get24hTime('18:11')); // 18:11
我使用類似的東西
//time is an array of [hh] & [mm am/pm] (you can get this by time = time.split(":");
function MilitaryTime(time){
if(time[1].indexOf("AM")!=-1){
//its in the morning, so leave as is
return time;
}else if(time[0]!="12"){
//If it is beyond 12 o clock in the after noon, add twelve for military time.
time[0]=String(parseInt(time[0])+12);
return time;
}
else{
return time;
}
}
退回時間后,您可以以任何方式更改文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.