class Calendar{
protected $time;
protected $timezone;
public $isLeapYear;
public function __construct($year) {
$this->timezone = new DateTimeZone('Asia/Bangkok');
$this->time = DateTime::createFromFormat('Y-n-j', $year.'-1-1', $this->timezone);
$this->isLeapYear = checkdate(2, 29, $this->time->format('Y'));
}
protected function getMonthFirstDay($month){
$format = sprintf('%d-%d-1',$this->time->format('Y'),$month);
return DateTime::createFromFormat('Y-n-j', $format, $this->timezone);
}
public function getMonthDays($month){
$interval = DateInterval::createFromDateString('+1day');
$time = $this->getMonthFirstDay($month);
$a = array();
while($time->format('n') == $month){
$a[] = clone $time;
$time->add($interval);
}
return $a;
}
public static function monthName($month){
$a = array(1=>'มกราคม','กุมภาพันธ์','มีนาคม','เมษายน',
'พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน'
,'ตุลาคม','พฤศจิกายน','ธันวาคม');
return $a[$month];
}
public static function dayName(DateTime $date){
$a = array('อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์');
return $a[$date->format('w')];
}
}
header('Content-type:text/html;charset=utf-8');
#header('Content-type:text/html;charset=tis-620');
$c = new Calendar(2012);
echo '<h1>Calendar 2012</h1>';
foreach(range(1,12) as $month){
echo '<h2>',Calendar::monthName($month),'</h2>';
foreach($c->getMonthDays($month) as $d){
echo Calendar::dayName($d),' ',$d->format('j'),'<','br/>';
}
}