PHP回合3S

问题描述:

我通过PHP获取时间PHP回合3S

$current_hour = date("G"); 

现在让我们假设$current_hour等于20.我怎么会四舍五入至19?或者如果$current_hour等于00,我会如何将它变成22?我不知道如果我解释这口井,但基本上我想每个号码本轮下跌中的3个时间间隔,所以我得到以下几点:

1 
4 
7 
10 
13 
16 
19 
22 
[back to begining] 

中的任何数字,应该得到整到最低他们所以11将会是10,15会是13等等......

+0

对不起我的数学不是很好,如果这是彪是简单的,或者我只是不看到它:( – 2012-04-11 19:53:30

+0

那么,你想要有人也可以微波你的晚餐,而他们**写**你的**代码?我有信心,一点点心理应用程序,你可以这个问题出来了。 – rdlowrey 2012-04-11 20:05:24

简单的方法是使用整数运算。首先除以3,然后投射到一个整数,然后再乘以3,并进行一些移位以保留你想要的序列。

例子:

$current_hour = 20; 
echo (intval(($current_hour + 23)/3) * 3 + 1) % 24; // Outputs 19 
+0

这会给你一个像0,3,6,9,12 ... – Arjan 2012-04-11 19:55:42

+0

'22/3 = 7.3'' 7 * 3 = 21'的序列不起作用。 – webbiedave 2012-04-11 19:56:00

+0

我认为这很明显,你为偏移加1。编辑使其更清晰。 – jli 2012-04-11 19:56:56

$round = intval(($current_hour - 1)/3) * 3 + 1; 
+0

另外:'if($ current_hour == 0)$ current_hour = 24;' – Botanick 2012-04-11 19:57:44

$round = (intval(($currentHour + 24)/3) * 3) % 24 + 1; 

我认为它是:

($current_hour - ($current_hour % 3)) + 1