2017-10-05 3 views
0

Je me bats vraiment obtenir ma tête les maths ici, mais je vais parier que c'est simple et je me botter :)PHP/Math Général - Trouver point suivant 12 jours

Je suis en train d'écrire une routine PHP cela donne à l'utilisateur un nouveau fichier tous les 12 jours.

Le point de départ est une date que j'ai stockée à laquelle ils ont débuté. J'ai le nombre de jours depuis qu'ils ont commencé dans une variable et je peux diviser cela par 12 pour calculer le nombre de fichiers à leur donner (tous les noms de fichiers sont stockés dans un tableau) - C'est facile.

Ce que je veux maintenant faire est de leur dire combien de jours jusqu'à ce qu'ils obtiennent leur prochain fichier.

J'ai donc:

$ num_days comme un entier égal au nombre de jours depuis qu'ils ont commencé.

Quel serait le calcul à calculer lorsque la limite des 12 prochains jours est de leur montrer combien de jours avant le prochain fichier s'il vous plaît?

+0

Modulo !!! http://php.net/manual/en/internals2.opcodes.mod.php Cela va "diviser" deux nombres et retourner le "restes". Ensuite, vous faites 12 - que – LordNeo

+0

@LordNeo c'est modulo, pas de module, non? – waterloomatt

+0

@waterloomatt désolé, mon anglais no bueno xD – LordNeo

Répondre

0

Vous êtes à la recherche de l'opérateur mod (%)

PHP MOD

Compte tenu de X et Y, il divise X en Y et au lieu de retourner le résultat, il renvoie les restes.

Exemple:

8 % 2 = 0 (8/2 = 4, leftover = 0) 
10 % 3 = 1 (10/3 = 3, leftover = 1) 

Alors, à votre situation particulière

$days_since = $num_days % 12 //days since the "last starting period" 
// for example if $num_days = 20, then $num_days % 12 = 8 
$days_until = 12 - $days_since 

Et voilà!

+0

Parfait - merci beaucoup :) –

0

PHP a beaucoup de fonctions pour faire face aux dates et heures

$joined = new DateTime('2011-10-01'); // Set this to date they joined 
$now = new DateTime(); // Date now 
$end = new DateTime('+13 day'); // Date in 13 days time, set to 12 if you want result to be 0 if today is file day 
$interval = new DateInterval('P12D'); // Set your date interval of 12 days 
$daterange = new DatePeriod($joined, $interval ,$end); // Get the date of every 12th day since they joined 
$files = 0; // Set file counter to zero 
foreach($daterange as $date){  // Loop over all the dates 
    $enddate = $date;   // Sets every time so when loop ends will return the last date 
    $files++;     // Add one to the number of files for each date 
} 
$interval = $now->diff($enddate); // Work out how many days between now and the next file day 
echo $interval->format('%a days until your next file is available'); // Profit!