PHP计算日期之间的周数并四舍五入到最近的一周

标签 php date rounding

我想弄清楚如何计算结算日期之间的周数。按周计费,因此 1 天以上 = 一周,8 天以上 = 2 周,依此类推。

到目前为止,我已经用我的代码计算出周数,但它似乎没有四舍五入到最近的一周,即使它只结束了一天(这就是我需要的)

我希望我已经正确解释了它,这就是我目前所知道的。

$strtDate = '2016-03-08';
$endDate = '2016-04-07';

echo $strtDate, $endDate;

$startDateWeekCnt = round(floor( date('d',strtotime($strtDate)) / 7)) ;
$endDateWeekCnt = round(ceil( date('d',strtotime($endDate)) / 7)) ;
$datediff = strtotime(date('Y-m',strtotime($endDate))."-01") - strtotime(date('Y-m',strtotime($strtDate))."-01");
$totalnoOfWeek = round(floor($datediff/(60*60*24)) / 7) + $endDateWeekCnt - $startDateWeekCnt ;
echo $totalnoOfWeek ."\n";

有谁知道我如何修改我的代码来做我需要的。在我粘贴的代码中,它给出了 4 周的答案,但它应该是 5 周,因为它至少比 4 周多 1 天。

提前致谢

最佳答案

你想要 ceil 而不是 round

ceil(abs(strtotime("2016-05-20") - strtotime("2016-05-12")) / 60 / 60 / 24 / 7);

关于PHP计算日期之间的周数并四舍五入到最近的一周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928145/

相关文章:

php - 是否可以用来自 html 表单的某些输入替换 SQL 查询的限制值?

java - 是否可以检测访问者 DNS 服务器?

php - 如何使用动态日期时间的 MySQL Event Scheduler?

php - '@' 前缀在 PHP 中有什么作用?

linux - 给定日期返回前一个星期天

java - 将 double 舍入到 int 始终为较小的值

date - 在 MDX 中过滤今天的日期

php - 如何将日期格式 yyyy-mm-dd 更改为 dd-mm-yyyy

C++四舍五入到1位小数,显示2位小数

Java - System.out.printf 舍入 float