カレンダーの左上と右下は、それぞれ前月と翌月の日付でうっすらと埋められているじゃないですか。あれ、表現しようと思うとなかなか面倒ですよね。というか、面倒でした。どこかにロジックが転がっているだろうと思いながらも、探す手間と書く手間を天秤にかけ、書くほうを選びました。 カレンダーの左上の日付を取得する。 function getCalendarStartDate($date = null, $format = 'Ymd') { if (!$date) $date = date('Ymd'); return date( $format, strtotime( sprintf( "%d01 -%d days", date('Ym', strtotime($date)), date('w', strtotime(date('Ym', strtotime($date)).'01')) ) ) );