我有一个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());
答案 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'...