suin.io

一瞬でカレンダーを作るためのPHP用関数

suin2011年2月18日

1ヶ月のカレンダー(日曜始まり)を作るコードを毎回新しく書いている気がするので、再利用できるようにメモしておく。

function getCalender($today = 'today')
{
	$oneDay = 86400; // 60 secs * 60 mins * 24 hours

	$today     = strtotime($today);
	$firstDate = strtotime(date('Y-m-01', $today));
	$lastDate  = strtotime(date('Y-m-t', $today));

	$lastMonthDays = date('w', $firstDate);
	$thisMonthDays = date('t', $lastDate);
	$nextMonthDays = 6 - date('w', $lastDate);

	$startDate = $firstDate - ( $lastMonthDays * $oneDay );
	$endDate   = $lastDate  + ( $nextMonthDays * $oneDay );

	$calendar = array();

	for ( $date = $startDate; $date <= $endDate; $date += $oneDay )
	{
		$calendar[] = getdate($date);
	}

	return $calendar;
}

使い方

<?php

$calendar = getCalender();

?>
<table>
<?php foreach ( $calendar as $date ): ?>
<?php if ( $date['wday'] == 0 ): ?><tr><?php endif ?>
<td><?php echo $date['mday'] ?></td>
<?php if ( $date['wday'] == 6 ): ?></tr><?php endif ?>
<?php endforeach ?>
</table>
RELATED POSTS