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

时间:2013-10-07 09:17:36

标签: php date

我想用$date减去$interval,请注意$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 =>真
  • $date = 2013-10-07,$interval = 1,$result = 2013-10-06 =>的

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

2 个答案:

答案 0 :(得分:2)

如果您将工作日定义为 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

答案 1 :(得分: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');
}