我正在寻找从特定日期开始上一个工作日的最佳方式。我正在使用的例子是圣诞节前夕(12月24日)的最后一个工作日。
不幸的是,这不起作用:
echo date('l jS \of F Y h:i:s A', strtotime('last weekday before 24th December 2012'));
答案 0 :(得分:6)
只需删除before
,您的示例就可以正常运行(从PHP 5.2.0开始)。根据{{3}},首先处理绝对日期部分(24th December 2012
),然后是相对部分(last weekday
)。
<强>原始强>
last weekday before 24th December 2012
<强>正确强>
last weekday 24th December 2012
根据其他答案,previous
和last
在问题中使用时的行为方式完全相同;意味着某事之前发生的事件(在这种情况下,是工作日)。 last
在last 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;