Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算每周的预算,还有多少周_Php_Date_Datetime Format - Fatal编程技术网

Php 计算每周的预算,还有多少周

Php 计算每周的预算,还有多少周,php,date,datetime-format,Php,Date,Datetime Format,我想计算从一个特定日期到另一个日期还有多少周,以便得到每周的预算。这是我的密码: $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 ('3

我想计算从一个特定日期到另一个日期还有多少周,以便得到每周的预算。这是我的密码:

$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
,这当然是错误的。但是我的代码有什么问题吗?

我得到1582.245。。检查/设置您的时区设置

date_default_timezone_set ($timezone_identifier)
试试这个功能

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

您可以按如下所示的不同方式进行操作

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

您是否检查了
$weeksleft
变量包含的内容?那么
$daysleft
会不会因为你的
3164.49
是一个字符串而不是一个数字呢?对我来说,php版本5.6上的代码输出
1582.245
这更有用,因为它使用的代码与我使用的代码相同。我忘了给回音行添加一个变量。现在显示的是正确的总数。谢谢:)您的欢迎,我很高兴能够回馈这样一个伟大的程序员社区。
$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);