2012-02-29 75 views
6

該函數以24小時格式返回時間。
如何將時間從24小時制轉換爲使用JavaScript的12小時制?

function fomartTimeShow(h) { 
    return h < 10 ? "0" + h + ":00" : h + ":00"; 
} 

以24小時格式返回時間。我想要以12小時的格式轉換時間。
Anyhelp將不勝感激。
謝謝。

+1

那麼'h'只是一個0到23之間的整數?你有什麼嘗試? – 2012-02-29 10:56:53

+0

如果您進行了大量的日期/時間解析,查看[Datejs](http://www.datejs.com/)可能會很有趣。 – flitig 2012-02-29 11:00:55

回答

13

只需使用模數12:

function formatTimeShow(h_24) { 
    var h = h_24 % 12; 
    return (h < 10 ? '0' : '') + h + ':00'; 
} 

模量(%)指分而採取的餘數。例如17/12 = 1,餘數爲5.所以17%12的結果是5,而小時17是12小時內的小時5。

但請注意,此功能不完整,因爲它不適用於小時0(或小時12)。要解決它,你必須在另一檢查添加爲:

function formatTimeShow(h_24) { 
    var h = h_24 % 12; 
    if (h === 0) h = 12; 
    return (h < 10 ? '0' : '') + h + ':00'; 
} 

另外請注意,您還可以輕鬆添加經絡,通過觀察時間是否小於12(上午)或等於/時(下午) :

function formatTimeShow(h_24) { 
    var h = h_24 % 12; 
    if (h === 0) h = 12; 
    return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? 'am' : 'pm'); 
} 

注:以上所有的假設參數,這個功能是一個整數介於0和23

+0

非常感謝您的幫助。 – saran 2012-02-29 11:07:13

+0

非常感謝你..它晶瑩剔透答案 – Dibish 2013-11-19 10:10:37

2

你可以嘗試像以下:

function fomartTimeShow(h) { 
    var ampm = "am" 
    if (h >= 12) 
     ampm = "pm" 
    h = h % 12; 
    if (h == 0) 
    h = 12; 
    return h ":00" + ampm; 
} 
+0

這不適用於午夜或中午。它會顯示「00:00 am」和「00:00 pm」。您應該檢查以查看值是否爲「0」並將其替換爲「12」。 – 2012-02-29 11:06:12

+0

'h = h%12;'之後,'h'永遠不會是'> = 12'。 – Toto 2012-02-29 15:22:39

+0

感謝Ben Lee和M42,你們都是對的。我修改了反映這一點的代碼。 – 2012-02-29 17:03:23

1
function fomartTimeShow(h) { 
    var s = (h % 24 < 12) ? "am" : "pm", h = h % 12 || 12; 
    return (h < 10 ? "0" + h : h) + ":00" + " " + s; 
} 
0

我敢肯定,這將工作作爲奔李的回答更簡捷的公式化的版本,包括爲H = 0和h = 12的情況:

function fomartTimeShow(h_24) { 
    var h = ((h_24 + 11) % 12)+1; 
    return (h < 10 ? '0' : '') + h + ':00'; 
} 

或包括AM/pm:

function fomartTimeShow(h_24) { 
    var h = ((h_24 + 11) % 12)+1; 
    return (h < 10 ? '0' : '') + h + ':00' + (h_24 < 12 ? 'am' : 'pm'); 
} 
相關問題