PHP 相对于当前日期的下一个第二个星期五

PHP next second friday relative to current date

我有一个 cron 作业,每两个星期五运行一次以发送到邮件列表

0   8   *   *   5   test $(($(date +\%V)\%2)) -eq 1

如何在 php 中找到相对于当前日期的下一个发货日期,以便通知用户下一次发货的时间。

例如

@returns next second Friday date from random_date
function next_dispatch_date(random_date){
} 
echo "Next Dispatch on" . next_dispatch_date(date());

我想到的第一个解决方案是:

$dt = new DateTime();
$dt->modify('next friday'); // Next friday from now
$dt->modify('next friday'); // Next friday from next friday

echo $dt->format('Y-m-d');

或者,正如您在 post 中提示的函数:

function next_dispatch_date($timestamp){
    $dt = new DateTime();
    $dt->setTimestamp($timestamp);
    $dt->modify('next friday');
    $dt->modify('next friday');

    return $dt->format('Y-m-d');
}

echo "Next dispatch on ".next_dispatch_date(time());

请注意,与您原来的 post 相比,我使用的是 time() 而不是 date(),后者用于格式化时间戳。

您可以使用具有相对格式的 strtotime()(参见 PHP manual

@returns next second Friday date from random_date
function next_dispatch_date($random_date){
  date('Y-m-d', strtotime('Friday next week '.$random_date));
}

假设 $random_date 的格式为 'Y-m-d'...