2012-04-11 4 views
0

Ich erhalte die Zeit über phpPHP-Runde in 3s

$current_hour = date("G"); 

Lassen Sie uns jetzt sagen, dass die $current_hour bis 20 gleich ist, wie würde ich um das zu 19? Oder wenn $current_hour gleich 00 ist, wie würde ich das auf 22 runden? Ich weiß nicht, ob ich das gut bin zu erklären, aber im Grunde will ich jede Zahl in Abständen von 3 bis abrunden, so erhalte ich die folgende:

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

Jede Zahl zwischen sollten auf den niedrigsten gerundet erhalten von sie also 11 wäre 10, 15 wäre 13 und so weiter ...

+0

leider meine Mathe nicht so gut ist, wenn das einfach sein ment ist, oder ich bin einfach nicht es zu sehen :( –

+0

Also, willst du jemanden auch Mikrowelle dein Abendessen, während ** sie ** schreiben ** Ihre ** Code? Ich habe das Vertrauen, dass mit ein wenig geistige Anwendung Sie herausfinden können dieses Problem aus. – rdlowrey

Antwort

2

Der einfache Weg wäre, ganzzahlige Operationen zu verwenden. Teilen Sie zuerst durch 3 und dann auf ein int, und multiplizieren Sie sie dann erneut mit 3, um die gewünschte Reihenfolge beizubehalten.

Beispiel:

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

Das würde Ihnen eine Sequenz wie 0, 3, 6, 9, 12 geben ... – Arjan

+0

'22/3 = 7.3' '7 * 3 = 21' Funktioniert nicht. – webbiedave

+0

Ich nahm an, es wäre offensichtlich, dass Sie 1 für den Offset hinzufügen .. Bearbeitet, um es klarer zu machen. – jli

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

Auch: 'if ($ current_hour == 0) $ current_hour = 24;' – Botanick

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

Ich denke, es ist:

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