获取指定工作日之前的日期


Get date before specified workdays

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

  • $date = 2013-10-07, $interval = 5, $result = 2013-09-30
  • $date = 2013-10-07,
  • $interval = 1, $result = 2013-10-04

到目前为止我的代码

$div = floor($interval / 5);
$mod = $interval % 5;
$workdays = $div * 7 + $mod;
$result = date("Y-m-d", strtotime($date . "-$workdays days"));
  • $date = 2013-10-07, $interval = 5, $result = 2013-09-30 => true
  • $date = 2013-10-07,
  • $interval = 1, $result = 2013-10-06 =>

请给我解决这个问题的方向,谢谢。

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

或者按照您的代码:

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

此答案的问题

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

使用示例:

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