PHP获得第一个工作日

时间:2011-02-16 19:04:33

标签: php math date

我试图找到指定日期的第一个工作日,但我还没有想出任何解决方案,但我在想,你可以做一些像strtotime(“ - x days”,$ time)

刚才我正在使用这种方法来计算回去的天数,但我想知道,如果可以以任何方式进行优化

if ($i == 0)
   return 6;
else
   return $i-1;

其中$ i是星期几的数字表示(与PHP的日期('w')相同)

我还需要找到一周的最后一天,但我想,你可以做到

strtotime('+'.date('w', $dateTo).'days', $dateTo);

2 个答案:

答案 0 :(得分:2)

尝试将strtotime()relative format一起使用。这样的事情应该有效: 第一个工作日为strtotime('monday', $relativeTime);,上一个工作日为strtotime('friday', $relativeTime);

答案 1 :(得分:2)

这是所有相对日期的数学。如果你有一个合适的PHP时间戳,那么它只是一个简单的整数。 date('w')是从该时间戳中提取星期值的正确方法,但其余的可以通过常规数学来完成:

$today = date('w', $dateTo);
$last_sunday = $dateTo - (86400 * $today); // same time on previous sunday
$last_day_of_week = $dateTo + (86400 * (6 % $today));

这比通过round-tripping的{​​{1}}更快,并且会导致日期字符串解析惩罚。