2

我想用 减去$date$interval请注意这$interval是工作日数。以下是一些示例(格式:yyyy-mm-dd)

  • $date= 2013 年 10 月 7 日,$interval= 5,$result= 2013年 9 月 30 日
  • $date= 2013 年 10 月 7 日,$interval= 1,$result= 2013年 10 月 4 日

到目前为止我的代码

$div = floor($interval / 5);
$mod = $interval % 5;
$workdays = $div * 7 + $mod;
$result = date("Y-m-d", strtotime($date . "-$workdays days"));
  • $date= 2013 年 10 月 7 日,$interval= 5,$result= 2013 年 9 月 30 日 => 真
  • $date= 2013 年 10 月 7 日,$interval= 1,$result= 2013 年 10 月 6 日 =>

请给我指导解决这个问题,谢谢。

4

2 回答 2

2

如果您将工作日定义为MON-FRI,那么您需要做的就是使用weekdays关键字 of strtotime。导致类似strtotime("-7 weekdays") 排除周六和周日的事情。

或按照您的代码:

$workdays = 5;
$result = date("Y-m-d", strtotime($date . "-$workdays weekdays"));

这个答案的问题

https://bugs.php.net/bug.php?id=63521

于 2013-10-07T09:25:22.437 回答
1

使用示例:

var_dump( subtractWorkDays('2013-10-07', 5) ); # 2013-09-30
var_dump( subtractWorkDays('2013-10-07', 1) ); # 2013-10-04

功能:

function subtractWorkDays($date, $days) {
    return date_create($date)->modify("-$days weekdays")->format('Y-m-d');
}
于 2013-10-07T09:25:31.747 回答