Skip to content

Instantly share code, notes, and snippets.

@sayjeyhi
Created March 31, 2017 09:30
Show Gist options
  • Save sayjeyhi/93986c7c4d4ce006349fb5d6c521f792 to your computer and use it in GitHub Desktop.
Save sayjeyhi/93986c7c4d4ce006349fb5d6c521f792 to your computer and use it in GitHub Desktop.
<style>
html{direction:rtl;text-align:right;font-family: tahoma}
.isToday{background:#ccc;color:red}
</style>
<?php
function build_calendar($month,$year) {
// Create array containing abbreviations of days of week.
$daysOfWeek = array('S','M','T','W','T','F','S');
// What is the first day of the month in question?
$firstDayOfMonth = mktime(0,0,0,$month,1,$year);
// How many days does this month contain?
$numberDays = date('t',$firstDayOfMonth);
// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);
// What is the name of the month in question?
$monthName = $dateComponents['month'];
// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];
// Create the table tag opener and day headers
$calendar = "<table class='calendar'>";
$calendar .= "<caption>$monthName $year</caption>";
$calendar .= "<tr>";
// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}
// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";
// The variable $dayOfWeek is used to ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
$calendar .= "<td colspan='$dayOfWeek'>&nbsp;</td>";
}
$today = date("Y-m-d", time());
$month = str_pad($month, 2, "0", STR_PAD_LEFT);
while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}
$currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
$date = "$year-$month-$currentDayRel";
$isTodayCheck = $today == $date ? "isToday" : "";
$calendar .= "<td class='day $isTodayCheck' rel='$date'>$currentDay</td>";
// Increment counters
$currentDay++;
$dayOfWeek++;
}
// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
$calendar .= "<td colspan='$remainingDays'>&nbsp;</td>";
}
$calendar .= "</tr>";
$calendar .= "</table>";
return $calendar;
}
?>
<?php
// print Current Month
$currentDate = getdate();
$month = $currentDate['mon'];
$year = $currentDate['year'];
echo build_calendar($month,$year);
?>
<hr/>
<?php
// print Month 1 of 2000
$m1y2000=build_calendar(1,2000);
echo $m1y2000;
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment