2013-09-22 59 views
2

將24小時時間(如軍事時間)轉換爲12小時(鐘面)時間似乎是使用模運算符的理想場所,但我無法找出一個純粹的數學方法來映射0到12(所以有1到12小時而不是0到11)。我已經能夠拿出最好的要麼是(在Ruby中)24小時和12小時之間更優雅的模數轉換?

modHour = militaryHour % 12 
if modHour == 0 
    clockHour = 12 
else 
    clockHour = modHour 
end 

,或者

hours = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
clockHour = hours[ militaryHour % 12 ] 

好像必須有某種方式來完成數學這一轉變,但我不能不知道。

回答

2

我覺得

hour12 = 12 - ((- hour24) % 12) 

應該工作。

+0

很酷,我喜歡它! – ivan

2

(原諒我的Python ...)

>>> for hr in range (24): 
... print hr, (hr + 11) % 12 + 1 
... 
0 12 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 10 
11 11 
12 12 
13 1 
14 2 
15 3 
16 4 
17 5 
18 6 
19 7 
20 8 
21 9 
22 10 
23 11 
+3

「對不起我的Python」 - 是一個程序員聊天嗎? ;) –

+1

啊,這就是我的想法!尼斯 – ivan

相關問題