برگزیده های پرشین تولز

مشکل در تابع تاریخ

علی آبادانی

Registered User
تاریخ عضویت
30 اکتبر 2006
نوشته‌ها
898
لایک‌ها
11
محل سکونت
Abadan
با سلام

دوستان مشکلی در تابع تاریخ بوجود اومده

این تابع تاریخ من هستش :

PHP:
function shdate($atim){
$y = date("Y",$atim);
$m = date("m",$atim);
$d = date("d",$atim);
switch ($m){
case 3:
 if ($d >=21){
 $rooz = $d - 20;
 $mah = 1;
 }else{
 $rooz = $d + 9;
 $mah = 12;
 }break;
case 4:
 if ($d >=22){
 $rooz = $d - 21;
 $mah = 2;
 }else{
 $rooz = $d + 11;
 $mah = 1;
 }break;
case 5:
 if ($d >=22){
 $rooz = $d - 21;
 $mah = 3;
 }else{
 $rooz = $d + 10;
 $mah = 2;
 }break;
case 6:
 if ($d >=23){
 $rooz = $d - 22;
 $mah = 4;
 }else{
 $rooz = $d + 9;
 $mah = 3;
 }break;
case 7:
 if ($d >=23){
 $rooz = $d - 22;
 $mah = 5;
 }else{
 $rooz = $d + 9;
 $mah = 4;
 }break;
case 8:
 if ($d >=23){
 $rooz = $d - 22;
 $mah = 6;
 }else{
 $rooz = $d + 9;
 $mah = 5;
 }break;
case 9:
 if ($d >=23){
 $rooz = $d - 22;
 $mah = 7;
 }else{
 $rooz = $d + 9;
 $mah = 6;
 }break;
case 10:
 if ($d >=23){
 $rooz = $d - 22;
 $mah = 8;
 }else{
 $rooz = $d + 8;
 $mah = 7;
 }break;
case 11:
 if ($d >=22){
 $rooz = $d - 21;
 $mah = 9;
 }else{
 $rooz = $d + 9;
 $mah = 8;
 }break;
case 12:
 if ($d >=22){
 $rooz = $d - 21;
 $mah = 10;
 }else{
 $rooz = $d + 9;
 $mah = 9;
 }break;
case 1:
 if ($d >=21){
 $rooz = $d - 20;
 $mah = 11;
 }else{
 $rooz = $d + 10;
 $mah = 10;
 }break;
case 2:
 if ($d >=20){
 $rooz = $d - 19;
 $mah = 12;
 }else{
 $rooz = $d + 11;
 $mah = 11;
 }break;
}
if ($m <3)
$sal = $y - 622;
else if ($m >3)
$sal = $y - 621;
else if ($m == 3 && $d <21)
$sal = $y - 622;
else
$sal = $y - 621;
$shdt = $sal.'-'.$mah.'-'.$rooz;
return $shdt;
}
// show persian date with month name
function farsidate($tm,$lay)
{
 if (!isset($lay))
  $lay = 0;
 $dt = shdate($tm);
 $dat = explode ('-',$dt);
 $year = $dat[0];
 $month = $dat[1];
 $day = $dat[2];
 $today = date('sat',$tm);
 switch ($month)
 {
  case 1:
  $mah = "فروردين";break;
  case 2:
  $mah = "ارديبهشت";break;
  case 3:
  $mah = "خرداد";break;
  case 4:
  $mah = "تير";;break;
  case 5:
  $mah = "مرداد";break;
  case 6:
  $mah = "شهريور";break;
  case 7:
  $mah = "مهر";break;
  case 8:
  $mah = "آبان";break;
  case 9:
  $mah = "آذر";break;
  case 10:
  $mah = "دي";break;
  case 11:
  $mah = "بهمن";break;
  case 12:
  $mah = "اسفند";break;
 }
 $rooz;
 $nrooz;
 switch ($today)
 {
  case 'Sat':
  $rooz = "شنبه";$nrooz=1;break;
  case 'Sun':
  $rooz = "يكشنبه";$nrooz=2;break;
  case 'Mon':
  $rooz = "دوشنبه";$nrooz=3;break;
  case 'Thr':
  $rooz = "سه شنبه";$nrooz=4;break;
  case 'Wed':
  $rooz = "چهار شنبه";$nrooz=5;break;
  case 'Thu':
  $rooz = "پنج شنبه";$nrooz=6;break;
  case 'Fri':
  $rooz = "جمعه";$nrooz=7;break;


از 27 اسفند پارسال یک روز عقب تر رو نشون میده

مثلاً اگر تاریخ این باشه : یکشنبه 15 اردیبهشت 1387

نشون میده : یکشنبه 14 اردیبهشت 1387


ممنون میشم اگر کمکم کنید
 
بالا