2012-02-29 116 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'); 
} 
相关问题