将24小时时间(如军事时间)转换为12小时(时钟面)时间似乎是使用模运算符的理想场所,但我无法找出一种纯粹的数学方法来映射0到12 (所以有1到12小时而不是0到11小时)。我能想到的最好的是(在Ruby中)
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 ]
似乎必须有某种方法可以用数学方法完成这种转变,但我无法弄明白。
答案 0 :(得分:3)
(原谅我的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
答案 1 :(得分:2)
我认为
hour12 = 12 - ((- hour24) % 12)
应该有用。
答案 2 :(得分:0)
Eric Jablow的回答对我来说没有正确的答案。我发现此内联函数虽然有效。
int militaryTime = 14;
int civilianTime = ((24hr - 1) % 12) + 1;