我的问题是:我的比赛日应该是现实世界的1/6。比赛日有12个游戏时间。因此,一个游戏时间是20分钟实时。或者那就是它应该是的。然而,当我观察时间时,而不是一小时20分钟,实际上是30分钟。我无法弄清楚造成这种情况的原因。我的功能出了什么问题?
public function getGameTime() {
$t = time();
$d = $t/60/60/6 - 68646;//the number taken off makes the current time day 200 instead of a really big number
$fraction = $d - floor($d);
if ($fraction<(1/12)) $hour = 0;
else if ($fraction<(1/12)*2) $hour = 1;
else if ($fraction<(1/12)*3) $hour = 2;
else if ($fraction<(1/12)*4) $hour = 3;
else if ($fraction<(1/12)*5) $hour = 4;
else if ($fraction<(1/12)*6) $hour = 5;
else if ($fraction<(1/12)*7) $hour = 6;
else if ($fraction<(1/12)*8) $hour = 7;
else if ($fraction<(1/12)*9) $hour = 8;
else if ($fraction<(1/12)*10) $hour = 9;
else if ($fraction<(1/12)*11) $hour = 10;
else $hour = 11;
for ($minute = 59; $minute>=0; $minute--) {
if ((($hour*60+$minute)/720)<$fraction) {
$min = $minute;
break;
}
}
return array(
"day" => floor($d),
"hour" => $hour,
"minute" => $min
);
}
答案 0 :(得分:0)
所以是的,如果我想要一天中有6个四小时的时间段,我需要除以4.除以6会给我四个6小时的时间段。因为除数是游戏日的实际生命小时数,而不是24小时内的游戏天数。问题解决了。