سلام
آیا پی اچ پی هم تقویم شمسی داره؟
کمی توضیح بدید ممنون میشم:20:
Printable View
سلام
آیا پی اچ پی هم تقویم شمسی داره؟
کمی توضیح بدید ممنون میشم:20:
کد آماده تقویم رو نمی دونم هست یا نه ولی یه مجموعه تابع هست که تاریخ شمسی رو برمی گردون که می تونید از اینجا بگیریدش و بعدا خودتون باهاش اسکریپت تقویم رو بنویسید:
کد:http://jdf.scr.ir
سلام این کد رو توی یه فایل php ذخیره کن بعد هر جا خواستی تاریخ رو به شمسی نشون بدی include کن
[PHP]
<?
function injection_replace($txtobject){
$txtobject1=strtolower($txtobject);
str_replace("'","'",$txtobject );
str_replace("'","'",$txtobject );
str_replace("<","<",$txtobject );
str_replace(">",">",$txtobject );
str_replace("#","",$txtobject );
str_replace("or","",$txtobject );
str_replace("delete","",$txtobject );
str_replace("update","",$txtobject );
str_replace("insert","",$txtobject );
return $txtobject;
}
$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);
function ConvertX2SDate($g_d, $g_m, $g_y) {
global $g_days_in_month, $j_days_in_month;
$div = create_function('$a, $b', 'return (int) ($a / $b);');
$gy = $g_y-1600;
$gm = $g_m-1;
$gd = $g_d-1;
$g_day_no = 365*$gy+$div($gy+3, 4)-$div($gy+99, 100)+$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)))
$g_day_no++; /* leap and after Feb */
$g_day_no += $gd;
$j_day_no = $g_day_no-79;
$j_np = $div($j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
$j_day_no = $j_day_no % 12053;
$jy = 979+33*$j_np+4*$div($j_day_no, 1461); /* 1461 = 365*4 + 4/4 */
$j_day_no %= 1461;
if ($j_day_no >= 366) {
$jy += $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($jd, $jm, $jy);
}
function ConvertS2XDate($j_d, $j_m, $j_y) {
global $g_days_in_month, $j_days_in_month;
$div = create_function('$a, $b', 'return (int) ($a / $b);');
$jy = $j_y-979;
$jm = $j_m-1;
$jd = $j_d-1;
$j_day_no = 365*$jy + $div($jy, 33)*8 + $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*$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*$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*$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 += $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 sprintf("%04d%02d%02d", $gy, $gm, $gd);
// return array($gy, $gm, $gd);
}
function shdate($date)
{
if($date==0000-00-00)
echo '';
else{
$yy=substr($date,0,4);
$mm=substr($date,5,2);
$dd=substr($date,8,2);
$sh = ConvertX2SDate($dd,$mm,$yy);
$sh[2]=substr($sh[2],2,2);
if ($sh[1]<10)
$sh[1]='0'.$sh[1];
if ($sh[0]<10)
$sh[0]='0'.$sh[0];
return $sh[2].'/'.$sh[1].'/'.$sh[0];
}
};
function farsidate($dte,$typ){
//$dte=gmdate ($dte)+(9.5)*3600;
$lweek=date("l",$dte);
switch ($lweek) {
case "Saturday":
$fweek="شنبه" ;
break;
case "Sunday":
$fweek="يكشنبه" ;
break;
case "Monday":
$fweek="دوشنبه" ;
break;
case "Tuesday":
$fweek="سه شنبه" ;
break;
case "Wednesday":
$fweek="چهارشنبه" ;
break;
case "Thursday":
$fweek="پنجشنبه" ;
break;
case "Friday":
$fweek="جمعه" ;
break;
}
// $dte=gmdate ($dte);
$dd=strftime ("%d",$dte);
$mm=strftime ("%m",$dte);
$yy=strftime ("%Y",$dte);
$sh = ConvertX2SDate($dd,$mm,$yy);
$sh[2]=substr($sh[2],2,2);
if ($sh[1]<10)
$sh[1]='0'.$sh[1];
if ($sh[0]<10)
$sh[0]='0'.$sh[0];
$sy=$sh[2];
$sm=$sh[1];
$sd=$sh[0];
$fdate="$sd/$sm/$sy";
$ftime=date("H:i",$dte);
$farsidate="$fweek $fdate ساعت $ftime";
switch ($typ) {
case "d":
$farsidate="$sd";
break;
case "m":
$farsidate="$sm";
break;
case "y":
$farsidate="$sy";
break;
case "t":
$farsidate=$ftime ;
break;
case "w":
$farsidate = $fweek;
break;
case "s":
$farsidate="$sy/$sm/$sd";
break;
case "c":
$farsidate="$sd/$sm/$sy";
break;
case "h":
$farsidate="$fweek $fdate";
break;
}
return $farsidate;
}
function ltr($st,$typ){
$m1=strpos($st,"/");
$m2=strpos($st,"/",$m1+1);
$len=strlen($st);
$st_y= substr($st,0,$m1);
$st_m=substr($st,$m1+1,$m2-$m1-1);
$st_d=substr($st,$m2+1,$len-$m2-1);
if(strlen($st_y)==1){$st_y="0".$st_y;}
if(strlen($st_m)==1){$st_m="0".$st_m;}
switch ($typ) {
case "d":$ltr="$st_d";break;
case "m":$ltr="$st_m";break;
case "y":$ltr="$st_y";break;
case "":$ltr="$st_d/$st_m/$st_y" ;break;
}
return $ltr;
}
?>
[/PHP]
بعد که Include کردی هر جا خواستی از این کد استفاده کن تا تاریخ میلادی رو به شمسی تبدیل کنه
[PHP]
<? echo farsidate(time(), 's2');?>
[/PHP]
که اختلاف زمان رو خودت با ثانیه تنطیم کن مثلایا از کدکد:time()+ or - zaman bar hasbe sanie
استفاده کن به جای time()کد:strtotime("now")