PHP相对于当前日期的下周五

时间:2015-04-20 18:21:03

标签: php date crontab

我有一个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());

2 个答案:

答案 0 :(得分:3)

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

$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');

或者,正如您在帖子中暗示的功能:

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());

请注意,与原始帖子相比,我使用的是time()而不是date(),用于格式化时间戳。

答案 1 :(得分:0)

您可以使用相对格式的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'...