2015-07-15 1 views
1

Je veux calculer combien de semaines il reste d'une date précise à une autre date, afin d'obtenir le budget par semaine. Voici mon code:Calculer le budget par semaine et combien de semaines il reste

$date_from = new DateTime('2015-07-28'); 
$date_to = new DateTime(); 
$interval = $date_from->diff($date_to); 
$daysleft = ($interval->format('%a') + 1); 
$weeksleft = number_format($daysleft/7); 

echo ('3164.49'/$weeksleft); 

qui imprime code 3 167,76 pour les 2 dernières semaines, ce qui est bien sûr faux. Mais quel est le problème avec mon code?

+0

Avez-vous vérifié que la variable 'weeksleft' $ contient? Que diriez-vous du '$ daysleft' Serait-ce parce que votre' 3164.49' est une chaîne et non un nombre? – Osuwariboy

+0

pour moi le code sorties '1582.245' c'est sur la version php 5.6 – andrew

Répondre

1
$date_from = new DateTime('2015-07-28'); 
$date_to = new DateTime(); 
$interval = $date_from->diff($date_to); 
$daysleft = ($interval->format('%a') + 1); 
$weeksleft = number_format($daysleft/7); 

echo (floatval('3164.49')/$weeksleft); 

Résultats 1582,245

+0

C'était plus utile car j'utilise le même code que celui que j'utilise. J'ai oublié d'ajouter une variable à la ligne d'écho. Il montre maintenant la bonne somme. Merci :) – Erik

+1

Votre bienvenue, je suis heureux de pouvoir redonner à une si grande communauté de programmeurs. –

0

essayer cette fonction,

function datediffInWeeks($date1, $date2) 
{ 
if($date1 > $date2) return datediffInWeeks($date2, $date1); 
$first = DateTime::createFromFormat('m/d/Y', $date1); 
$second = DateTime::createFromFormat('m/d/Y', $date2); 
return floor($first->diff($second)->days/7); 
} 

var_dump(datediffInWeeks('1/2/2013', '6/4/2013'));// 21 
1

Vous pouvez le faire de manière différente, comme indiqué ci-dessous.

$a = strtotime('2015/07/28'); 
$b = time(); 
$diff = abs($a - $b); 
echo round($diff/(60*60*24*7)); // to get round figure 
+0

Si vous l'avez trouvé utile alors vous pouvez voter. –