我正在寻找从特定日期获得最后一个工作日的最佳方法。我使用的示例是圣诞节前夕(12 月 24 日)前的最后一个工作日。
不幸的是,这不起作用:
echo date('l jS \of F Y h:i:s A', strtotime('last weekday before 24th December 2012'));
只需删除before
,您的示例就可以正常工作(从 PHP 5.2.0 开始)。根据相对格式文档,首先处理绝对日期部分 ( 24th December 2012
),然后处理相对部分 ( last weekday
) 。
原来的
last weekday before 24th December 2012
正确的
last weekday 24th December 2012
根据其他答案,previous
当last
在问题中使用时,其行为方式完全相同;表示某事的前一次发生(在这种情况下,是工作日)。last
在 的 样式中使用时确实有另一个特殊含义last dayname of
,而问题中没有使用。
参考:
你有没有尝试过这样的事情:
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;