Advertisement
HristoBaychev

calendar

Apr 8th, 2023 (edited)
706
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.04 KB | None | 0 0
  1. <?php
  2.  
  3. function generate_month_calendar($date, $firstDayOfWeek = "П", $includePreviousDays = false) {
  4.     $first_day = date('w', strtotime($date));
  5.     $last_day = date('t', strtotime($date));
  6.     $bg_months = array(
  7.         'January' => 'Януари',
  8.         'February' => 'Февруари',
  9.         'March' => 'Март',
  10.         'April' => 'Април',
  11.         'May' => 'Май',
  12.         'June' => 'Юни',
  13.         'July' => 'Юли',
  14.         'August' => 'Август',
  15.         'September' => 'Септември',
  16.         'October' => 'Октомври',
  17.         'November' => 'Ноември',
  18.         'December' => 'Декември'
  19.     );
  20.     $month_name = ucfirst(str_replace(array_keys($bg_months), array_values($bg_months), date('F Y', strtotime($date))));
  21.     $currentDay = intval(date('15'));
  22.     $count = 0;
  23.  
  24.     $previous_days = $includePreviousDays ? $first_day : 0;
  25.  
  26.     if ($firstDayOfWeek == "Н") {
  27.         $week_days = array('Н', 'П', 'В', 'С', 'Ч', 'П', 'С');
  28.     } else {
  29.         $week_days = array('П', 'В', 'С', 'Ч', 'П', 'С', 'Н');
  30.         $key = array_search($firstDayOfWeek, $week_days);
  31.         $first_day = intval($first_day) - ($key + 1);
  32.     }
  33.  
  34.     echo "<h2>" . $month_name . "</h2>";
  35.     echo "<table>";
  36.     echo "<tr>";
  37.     foreach ($week_days as $day) {
  38.         echo "<th>" . $day . "</th>";
  39.     }
  40.     echo "</tr>";
  41.     echo "<tr>";
  42.     $day = 1;
  43.     for ($i = 0; $i < $first_day; $i++) {
  44.         if ($includePreviousDays) {
  45.             $previous_month_last_day = date('t', strtotime('-1 month', strtotime($date)));
  46.             $day_number = $previous_month_last_day - ($first_day - $i - 1);
  47.             echo "<td>" . $day_number . "</td>";
  48.         } else {
  49.             echo "<td></td>";
  50.         }
  51.     }
  52.     while ($day <= $last_day) {
  53.         for ($i = $first_day; $i < 7 && $day <= $last_day; $i++) {
  54.             if ($currentDay === $day) {
  55.                 echo "<td>" . "($currentDay)" . "</td>";
  56.                 $day++;
  57.             } else {
  58.                 echo "<td>" . $day . "</td>";
  59.                 $day++;
  60.             }
  61.         }
  62.         if ($day <= $last_day) {
  63.             echo "</tr><tr>";
  64.         }
  65.         $first_day = 0;
  66.     }
  67.     while ($i < 7) {
  68.         $i++;
  69.         $count++;
  70.     }
  71.  
  72.     for ($i = 0; $i < $count; $i++) {
  73.         if ($includePreviousDays) {
  74.             $next_month_day = date('t', strtotime('+1 month', strtotime($date)));
  75.             $dayNumber = abs($next_month_day - ($last_day + $i));
  76.             echo "<td>" . $dayNumber . "</td>";
  77.         } else {
  78.             echo "<td></td>";
  79.         }
  80.     }
  81.  
  82.  
  83.  
  84.     echo "</tr>";
  85.     echo "</table>";
  86.  
  87.     $zodiac = [
  88.         'Ram' => ['start_date' => '03-21', 'end_date' => '04-19'],
  89.         'Bul' => ['start_date' => '04-20', 'end_date' => '05-20'],
  90.         'Twins' => ['start_date' => '05-21', 'end_date' => '06-21'],
  91.         'Crab' => ['start_date' => '06-22', 'end_date' => '07-22'],
  92.         'Lion' => ['start_date' => '07-23', 'end_date' => '08-22'],
  93.         'Virgin' => ['start_date' => '08-23', 'end_date' => '09-22'],
  94.         'Balance' => ['start_date' => '09-23', 'end_date' => '10-23'],
  95.         'Scorpion' => ['start_date' => '10-24', 'end_date' => '11-21'],
  96.         'Archer' => ['start_date' => '11-22', 'end_date' => '12-21'],
  97.         'Goat' => ['start_date' => '12-22', 'end_date' => '01-19'],
  98.         'WaterBearer' => ['start_date' => '01-20', 'end_date' => '02-18'],
  99.         'Fish' => ['start_date' => '02-19', 'end_date' => '03-20']
  100.     ];
  101.  
  102.     foreach ($zodiac as $sign => $dates) {
  103.         $startDate = date('y') . '-' . $dates["start_date"];
  104.         $timeStartDate = strtotime($startDate);
  105.         $endDate = date('y') . '-' . $dates["end_date"];
  106.         $timeEndDate = strtotime($endDate);
  107.         $today = strtotime(date("y-m-d"));
  108.         if ($today >= $timeStartDate && $today <= $timeEndDate) {
  109.             echo "Your sign is: $sign";
  110.         }
  111.     }
  112. }
  113.  
  114. generate_month_calendar(date("2023-03-15"), $firstDayOfMonth = "П", $includePreviousDays = true, $zodiac = []);
  115.  
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement