我想用 php 或 cakephp 函数减去日期,
示例:
$date1 = '2016-05-19';
$date2 = '2016-05-23';
我想要减去没有星期日的日期,从示例中我想要的结果是 3,而不是 4,因为 4 - 1(星期日),
我已经尝试使用新的 Datetime php,如这段代码,
$receipt_date = new DateTime($air_way_bill['AirWayBill']['receive_date']);
$date = new DateTime($air_way_bill['AirWayBill']['date']);
$difference = $receipt_date->diff($date);
但结果是 4,我如何在该范围内减去星期日? 有什么步骤或方法可以实现我的意思吗?
提前致谢...
[结案]:
正确答案:
// ============================= 1 ==================== //
$receipt_date = new DateTime('2016-05-19');
$date = new DateTime('2016-05-23');
$difference = $receipt_date->diff($date);
$daterange = new DatePeriod($receipt_date, new DateInterval('P1D'), $date);
$count = 0;
foreach($daterange as $date){
if(!($date->format("w"))) {
$count++;
}
}
echo ($difference->days)-$count;
//=============================================== ===//
// ============================= 2 ==================== //
function getSubtrackedDayCountWithoutSundaysButWithAllOtherDaysUsingDateTimeFunctions($startDate, $endDate)
{
$days = $startDate->diff($endDate, true)->days;
$sundays = intval($days / 7) + ($startDate->format('N') + $days % 7 >= 7);
return intval($days)-Sundays;
}
//=============================================== ===========//
//===================== 这是我的实验 ===============//
$date = date('Y-m-d', strtotime($air_way_bill['AirWayBill']['date']));
$receive_date = date('Y-m-d', strtotime($air_way_bill['AirWayBill']['receive_date']));
$date_diff = round(abs(strtotime($receive_date) - strtotime($date)) / 86400);
$weeks = round(abs(strtotime($receive_date) - strtotime($date)) / (86400 * 7));
echo $date_diff - $weeks;
//=============================================== ===========//
非常感谢...
最佳答案
您可以查找总天数,然后查找该范围内的周日数。最后从总天数中减少这些天数:
<?php
$receipt_date = new DateTime('2016-05-19');
$date = new DateTime('2016-05-23');
$difference = $receipt_date->diff($date);
$daterange = new DatePeriod($receipt_date, new DateInterval('P1D'), $date);
$count = 0;
foreach($daterange as $date){
if(!($date->format("w"))) {
$count++;
}
}
echo ($difference->days)-$count;
关于php - 如何在PHP中减去两个没有星期日的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319845/