2013-09-22 28 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

相关问题