9

我正在寻找从特定日期获得最后一个工作日的最佳方法。我使用的示例是圣诞节前夕(12 月 24 日)前的最后一个工作日。

不幸的是,这不起作用:

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

2 回答 2

7

只需删除before,您的示例就可以正常工作(从 PHP 5.2.0 开始)。根据相对格式文档,首先处理绝对日期部分 ( 24th December 2012),然后处理相对部分 ( last weekday) 。

原来的

last weekday before 24th December 2012

正确的

last weekday 24th December 2012

根据其他答案,previouslast在问题中使用时,其行为方式完全相同;表示某事的前一次发生(在这种情况下,是工作日)。last在 的 样式中使用时确实有另一个特殊含义last dayname of,而问题中没有使用。

参考:

于 2012-12-19T20:12:11.363 回答
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;
于 2012-12-19T19:59:07.413 回答