تقویم

parsa-s

New Member
سلام
کد زیر مربوطبه تقویم جلالی است اما 2 تا مشکل دارد .
1- نام ماه را در بالای جدول به صورت نا مفهومی نشان می دهد که من فکر می کنم به خاطر خاصیت encoding است که متاسفانه نتونستم دستوری برای اصلاحش پیدا کنم .
2- در تعریف تقویم باید نام روز های هفته در سطر اول جدول تقویم نمایش داده بشه که نمی شه ، من نمی دونم اشکالش از چی است .
لطفا یکی کمک کنه .
اینم کد تقویم
PHP:
<?php
class Calendar
{
var $OutputText = "";
function SetStyle()
{
$Style =
"<style>
table {
background-color: #EEEEDD;
border-width: 0;
font-size: 80%
}
td.day {
border:1px solid #c6a646; background-color: #EEEEDD;
text-align: center;
direction: rtl
}
td.month {
border:1px solid #c6a646; background-color: #FFCCBB;
encoding : utf-8;
font-size : 9px;
text-align: center;
direction: rtl
}
td.today {
border:1px solid #c6a646; background-color: #FFCCFF;
text-align: center;
direction: rtl
}
</style>";
print $Style;
}
function ReturnMonthName($monname)
{
switch($monname)
{
case 1:
return "فروردين";
break;
case 2:
return " ارديبهشت";
break;
case 3:
return " خرداد ";
break;
case 4:
return " تير ";
break;
case 5:
return " مرداد ";
break;
case 6:
return " شهريور ";
break;
case 7:
return " مهر ";
break;
case 8:
return " آبان ";
break;
case 9:
return " آذر ";
break;
case 10:
return " دى ";
break;
case 11:
return " بهمن  ";
break;
case 12:
return " اسفند " ;
break;
}
}
function div($a,$b)
{
return (int) ($a / $b);
}
// Thanks to Roozbeh Pournader and Mohammad Toosi for their Date Conversion program
function gregorian_to_jalali ($g_y, $g_m, $g_d)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$gy = $g_y-1600;
$gm = $g_m-1;
$gd = $g_d-1;
$g_day_no = 365*$gy+$this->div($gy+3,4)-$this->div($gy+99,100)+$this->div($gy+399,400);
for ($i=0; $i < $gm; ++$i)
$g_day_no += $g_days_in_month[$i];
if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0)))
/* leap and after Feb */
$g_day_no++;
$g_day_no += $gd;
$j_day_no = $g_day_no-79;
$j_np = $this->div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$j_day_no = $j_day_no % 12053;
$jy = 979+33*$j_np+4*$this->div($j_day_no,1461); /* 1461 = 365*4 + 4/4 */
$j_day_no %= 1461;
if ($j_day_no >= 366) {
$jy += $this->div($j_day_no-1, 365);
$j_day_no = ($j_day_no-1)%365;
}
for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i)
$j_day_no -= $j_days_in_month[$i];
$jm = $i+1;
$jd = $j_day_no+1;
return array($jy, $jm, $jd);
}
function jalali_to_gregorian($j_y, $j_m, $j_d)
{
$g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
$jy = $j_y-979;
$jm = $j_m-1;
$jd = $j_d-1;
$j_day_no = 365*$jy + $this->div($jy, 33)*8 + $this->div($jy%33+3, 4);
for ($i=0; $i < $jm; ++$i)
$j_day_no += $j_days_in_month[$i];
$j_day_no += $jd;
$g_day_no = $j_day_no+79;
$gy = 1600 + 400*$this->div($g_day_no, 146097); /* 146097 = 365*400 + 400/4 - 400/100 +
400/400 */
$g_day_no = $g_day_no % 146097;
$leap = true;
if ($g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */
{
$g_day_no--;
$gy += 100*$this->div($g_day_no, 36524); /* 36524 = 365*100 + 100/4 - 100/100 */
$g_day_no = $g_day_no % 36524;
if ($g_day_no >= 365)
$g_day_no++;
else
$leap = false;
}
$gy += 4*$this->div($g_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$g_day_no %= 1461;
if ($g_day_no >= 366) {
$leap = false;
$g_day_no--;
$gy += $this->div($g_day_no, 365);
$g_day_no = $g_day_no % 365;
}
for ($i = 0; $g_day_no >= $g_days_in_month[$i] + ($i == 1 && $leap); $i++)
$g_day_no -= $g_days_in_month[$i] + ($i == 1 && $leap);
$gm = $i+1;
$gd = $g_day_no+1;
return array($gy, $gm, $gd);
}
function CalculateTotalDays($jmonth)
{
switch ($jmonth)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
$TotalDays = 31;
break;
case 7:
case 8:
case 9:
case 10:
case 11:
$TotalDays = 30;
break;
case 12:
$TotalDays = 29;
break;
}
return $TotalDays;
}
function ShowJalaliMonth($jyear,$jmonth)
{
$todaygyear = date("Y");
$todaygmonth = date("m");
$todaygday = date("d");
list( $todayjyear, $todayjmonth, $todayjday ) = $this->gregorian_to_jalali($todaygyear,$todaygmonth,$todaygday);
list( $gyear, $gmonth, $gday ) = $this->jalali_to_gregorian($jyear, $jmonth, 1);
$FirstDay = mktime(0,0,0,$gmonth,$gday,$gyear);
$FirstDayArray = getdate($FirstDay);
$DayOfWeek = $FirstDayArray['wday'];
switch ($DayOfWeek)
{
case 0:
$Difference = -1;
break;
case 1:
$Difference = -2;
break;
case 2:
$Difference = -3;
break;
case 3:
$Difference = -4;
break;
case 4:
$Difference = -5;
break;
case 5:
$Difference = -6;
break;
case 6:
$Difference = 0;
break;
}
//$charset = 'utf-8';
$this->OutputText = '<table width="552">;'."\n";
$this->OutputText .= ' <tr>'."\n";
$this->OutputText .= ' <td class= "month" colspan="7" width="70%">'.$this->ReturnMonthName($jmonth).'&nbsp;&nbsp;' .$jyear.'</td>'."\n";
$this->OutputText .= ' </tr>'."\n";
$this->OutputText .= ' <tr>'."\n";
$this->OutputText .= '   <td class="month" width=13% "جمعه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "پنجشنبه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "چهارشنبه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "سه شنبه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "دوشنبه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "يکشنبه"></td>'."\n";
$this->OutputText .= '   <td class="month" width=13% "شنبه"></td>'."\n";
$this->OutputText .= ' </tr>'."\n";
for ($i=0;$i<6;$i++)
{
$Const = 7*$i+$Difference ;
$this->OutputText .= ' <tr>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 7 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear == $todayjyear))
$this->OutputText .= "class=today" ;
else
$this->OutputText .= "class= day";
$this->OutputText .= '>'."\n";
$Output = $Const + 7;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth)))
$this->OutputText .=$Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 6 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear ==$todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 6;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth)))
$this->OutputText .=$Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 5 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear ==$todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 5;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth)))
$this->OutputText .=$Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 4 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear ==$todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 4;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth)))
$this->OutputText .=$Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 3 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear == $todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 3;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth))) $this->OutputText .=$Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 2 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear == $todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 2;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth))) $this->OutputText .= $Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' <td ';
if (($Const + 1 == $todayjday) && ($jmonth == $todayjmonth) && ($jyear ==$todayjyear))
$this->OutputText .= "class=today";
else
$this->OutputText .= "class=day";
$this->OutputText .= '>'."\n";
$Output = $Const + 1;
if (($Output>0) && ($Output<=$this->CalculateTotalDays($jmonth))) $this->OutputText .= $Output;
$this->OutputText .= ' </td>'."\n";
$this->OutputText .= ' </tr>'."\n";
}
$this->OutputText .= '</table>'."\n";
print $this->OutputText;
}
}

?>
 

جدیدترین ارسال ها

بالا