將24小時時間轉換爲12小時時間的功能相當簡單,但您有一些特殊要求。考慮以下幾點:
// Convert string in 24 hour time to 12 hour hh:mm ap
// Input can be 12:23, 945, 09,12, etc.
function from24to12(s) {
var b = s.replace(/\D/g,'');
var h = b.substring(0, b.length - 2);
var m = b.substring(b.length - 2);
return (h%12 || 12) + ':' + m + ' ' + (h>11? 'PM':'AM');
}
console.log(from24to12('23:15')); // 11:15 PM
console.log(from24to12('015')); // 12:15 AM
console.log(from24to12('1.15')); // 1:15 AM
這裏假設你不希望在小時和前導零的運營商將在兩位數總是關鍵的幾分鐘,例如9.03,而不是9.3。爲了支持後者,需要3行代碼。
下支持分隔的任何字符,也說9.3上午9:03:
// Convert string in 24 hour time to 12 hour hh:mm ap
// Input can be 12:23, 945, 09,12, etc.
// Sseparator can be any non-digit. If no separator, assume [h]hmm
function from24to12(s) {
function z(n){return (n<10?'0':'')+n}
var h, m, b, re = /\D/;
// If there's a separator, split on it
// First part is h, second is m
if (re.test(s)) {
b = s.split(re);
h = b[0];
m = z(+b[1]);
// Otherwise, last two chars are mm, first one or two are h
} else {
h = s.substring(0, s.length - 2);
m = s.substring(s.length - 2);
}
return (h%12 || 12) + ':' + m + ' ' + (h>11? 'PM':'AM');
}
console.log(from24to12('23:15')); // 11:15 AM
console.log(from24to12('005')); // 12:05 AM
console.log(from24to12('1.15')); // 1:15 AM
console.log(from24to12('17.5')); // 5:05 PM
題外話(見codereview.stackexchange.com),你甚至沒有張貼代碼 – Alnitak
「下面的代碼」在哪裏? – RobG
此問題不是[*如何格式化javascript日期*]的重複(http://stackoverflow.com/questions/3552461/how-to-format-javascript-date)。沒有涉及日期或日期對象,操作系統詢問如何重新格式化代表時間的字符串。 – RobG