我一直试图在一个圆圈的帮助下开发一个时钟控制。因此,如果圆圈处于360度的3'O时钟,如果它的90度,那么它将是12'o时钟。如果我有圆的角度,我无法弄清楚用什么公式可以用hh:mm格式查找时间。
例如
9'o时钟是180度。 3'o时钟是360度 12'o时钟是90度,依此类推。
答案 0 :(得分:2)
这可能是一种更简洁的方法,但这就是你需要做的事情。
java中的示例实现:
public static String convertAngleToTimeString(float angle) {
String time = "";
float decimalValue = 3.0f - (1.0f/30.0f) * (angle % 360);
if (decimalValue < 0)
decimalValue += 12.0f;
int hours = (int)decimalValue;
if (hours == 0)
hours = 12;
time += (hours < 10 ? "0" + hours: hours) + ":";
int minutes = (int)(decimalValue * 60) % 60;
time += minutes < 10 ? "0" + minutes: minutes;
return time;
}
答案 1 :(得分:1)
首先假设12点是0度。这是有道理的,因为当一次昼夜不停时,度数会增加,小时数也会增加(没有环绕),所以也许我们可以将小时乘以常数。
要让它在12点再次达到360度,我们需要将小时数乘以360/12 = 30 。
所以现在3点是90度,12点是0点。
减去90 ,我们在0点和12点钟位于-90点钟位置。
然后使其为负,我们按照要求在0点和12点钟位置设置为3点钟。
我们走了,现在你只需要把它们放在一起。
答案 2 :(得分:1)
您可以在维基百科上查看这些公式,他们可能会提供帮助:http://en.wikipedia.org/wiki/Clock_angle_problem
但除此之外,你可以做一些简单的事情,例如度/ 360 * 12. +偏移。
例如,如果我们设置360度是12点,你有90度。你会得到的。 90/360 * 12 = 3.那就是3'o时钟。然后你可以添加你的偏移量,在你的情况下是3,所以它将是6点钟。
答案 3 :(得分:0)
hrs = date +%H
#H&gt;&gt;
min = date +%M
#min&gt;&gt;
dim = echo "scale=2; $hrs * 60 + $min" | bc
#day in minutes&gt;&gt;
dis = echo "scale=2; $dim * 60 + $sec" | bc
#day in seconds&gt;&gt;
did = echo "scale=2; $dis / 240" | bc
#day in degree&gt;&gt;
行星革命是每240秒一度。
我努力做一个sumerian-time-sys。 一个苏美尔时代相当于两个当前的HRS或30个革命度。寻找性系统。 玩得开心!