如果 bday 基于此人的出生年份,那么除非此人不到 7 天,否则我看不出与 curdate() 的比较将如何给您答案。=)
编辑:
你应该能够做到:
$bday_this_year = strtotime(date('Y') . '-' . date('m-d', $bday));
$bday_last_year = strtotime(date('Y')-1 . '-' . date('m-d', $bday));
$bday_next_year = strtotime(date('Y')+1 . '-' . date('m-d', $bday));
$last_week = strtotime("-1 week");
$next_week = strtotime("+1 week");
if (($bday_this_year > $last_week && $bday_this_year < $next_week) || ($bday_last_year > $last_week && $bday_last_year < $next_week) || ($bday_next_year > $last_week && $bday_next_year < $next_week)) {
// Happy Birthday duders!
}
计算不同年份的生日的原因是为了处理在 12 月下旬和用户的生日在 1 月,或者在 1 月初和用户的生日在 12 月下旬等边缘情况。
这个答案可能会被改进,但它应该可以工作。