上个工作日从php的具体日期开始

时间:2012-12-19 19:54:12

标签: php date

我正在寻找从特定日期开始上一个工作日的最佳方式。我正在使用的例子是圣诞节前夕(12月24日)的最后一个工作日。

不幸的是,这不起作用:

echo date('l jS \of F Y h:i:s A', strtotime('last weekday before 24th December 2012'));

2 个答案:

答案 0 :(得分:6)

只需删除before,您的示例就可以正常运行(从PHP 5.2.0开始)。根据{{​​3}},首先处理绝对日期部分(24th December 2012),然后是相对部分(last weekday)。

<强>原始

last weekday before 24th December 2012

<强>正确

last weekday 24th December 2012

根据其他答案,previouslast在问题中使用时的行为方式完全相同;意味着某事之前发生的事件(在这种情况下,是工作日)。 lastlast dayname of样式中使用时,{{1}}确实有另一种特殊含义,但未在问题中使用。

参考:

答案 1 :(得分:1)

你有没有试过这样的事情:

echo date('l jS \of F Y h:i:s A', strtotime('24th December 2012 previous weekday'));

这将使用Friday 21st of December 2012 12:00:00 AM

输出PHP 5.3.19之类的内容

另一种方式你可以解决这个问题,它不是最漂亮的东西,但应该有效:

$date = '24th December 2012';
$dateN = intval(date('N', strtotime($date)));

if ($dateN === 1) {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-3 days'));
} else if ($dateN === 7) {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-2 day'));
} else {
    $prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-1 day'));
}

echo $prevWeekday;