1週間前、今日、1週間後の誕生日を持つメンバーのリストを生成する関数を作成しました。機能は
$m= date("m"); // Month value
$de= date("d"); //today's date
$y= date("Y"); // Year value
for($i=0;$i<count($members);$i++){
$m_bday = strtotime($members[$i]->dob);
$bday_date = date('d',$m_bday);
$bday_month = date('m',$m_bday);
$bday = strtotime(date('Y-m-d',mktime(0,0,0,$bday_month,$bday_date,$y)));
//echo $bday_date."</br>".$bday_month."</br>".$members[$i]->dob."</br>".date('Y-m-d',$bday);exit;
$week_before = strtotime(date('Y-m-d', mktime(0,0,0,$m,($de-7),$y)));
$week_after = strtotime(date('Y-m-d', mktime(0,0,0,$m,($de+7),$y)));
if(date('d-m') == date('d-m',$bday)){
$this->present_bday[] = array('mem_name'=> $members[$i]->name);
}
else if(date('d-m',$week_before) <= date('d-m',$bday) && date('d-m',$bday) < date('d-m')){
$this->past_bday[] = array('mem_name' => $members[$i]->name);
}
else if(date('d-m')< date('d-m',$bday) && date('d-m',$bday) <= date('d-m',$week_after)){
$this->future_bday[] = array('mem_name' => $members[$i]->name);
}
}
データベースから返される日付形式はyyyy-mm-dd
ie1960-06-12
です。このコードは、1 週間前と今日は正常に機能しますが、年が 1970 年未満の場合は戻ってから 1 週間、状態が完全に失敗してから 1 週間後です。
正しい結果を得るための適切な日付操作を誰かに教えてもらえますか?