2015-07-15 3 views
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 ('3164.49'/$weeksleft); 

, что код печатает 3 167,76 за последние 2 недели, которые, конечно, не так. Но что не так с моим кодом?

+0

вы проверили ли то, что 'переменных $ weeksleft' содержит? Как насчет '$ daysleft' Может быть, потому что ваш' 3164.49' - это строка, а не число? – Osuwariboy

+0

для меня код выводит '1582.245' thats on php version 5.6 – andrew

ответ

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); 

Результаты 1582,245

+0

Это было более полезно, поскольку он использует тот же самый код, который я использую. Я забыл добавить переменную в эхо-строку. Теперь он показывает правильную сумму. Спасибо :) – Erik

+1

Приветствую вас, я рад, что смог отдать такое огромное сообщество программистов. –

0

попробовать эту функцию,

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

Вы можете сделать это по-другому, как показано ниже.

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

Если бы вы нашли это полезным, то вы можете проголосовать. –