0

我有一个 facebook 应用程序,将用户生日作为 varchar 存储在 mysql db 中。我试图让所有用户的生日

1 周后,如果是在本周,如果生日是上周。

在我的 php 中,我得到生日并用 strtotime() 转换它们

我可以轻松检查生日是否是今天

if (date('m-d') == date('m-d', $bday)) {
    // today is your bday!!
}

在比较日期时我迷失了 aahaha 我知道我可以使用 strtotime('nextweek') 或类似的东西,但我不确定

4

2 回答 2

2

查询将类似于:

select * from table 
where bday between curdate() - INTERVAL 7 DAY and curdate() + INTERVAL 7 DAY

上周和下周的范围。

于 2012-05-18T02:26:40.043 回答
1

如果 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 月下旬等边缘情况。

这个答案可能会被改进,但它应该可以工作。

于 2012-05-18T02:58:56.103 回答