首页 > 解决方案 > 为什么 PHP 8 会返回错误的明年第二个星期五

问题描述

但是,为了获得明年的第二个星期五,我使用second Friday of Januar next year了 ,这会返回错误的日期。(这不仅是第二个或星期五,这涉及以这种方式的每个日期)

请参阅以下示例


$FIRST_FRI_JAN_NEXT_YEAR_TEXT   = 'second friday of january next year';                        
$jan1 = new DateTime($FIRST_FRI_JAN_NEXT_YEAR_TEXT );     // = 22-01-08  // wrong date

$FIRST_FRI_JAN_NEXT_YEAR_NUMBER = 'second friday of 2022-01';
$jan2 = new DateTime($FIRST_FRI_JAN_NEXT_YEAR_NUMBER);    // = 22-01-14  // right date

在线演示

这是有原因的还是这是一个错误?

标签: phpdatetime

解决方案


这不是一个错误。“明年一月的第二个星期五”解释为今年的“一月的第二个星期五”,“明年”解释为+1年。对于长表达式,处理它们的顺序并不总是很清楚。通常最好分几个步骤执行此操作。

$jan2 = date_create('next year')->modify('second friday of january');  //2022-01-14

推荐阅读