رتبه بندی این آیتم
رتبه 5 در 1 رای

PHP class converting date from gregorian to hijri ( arabic ) ( Islamic )

class ICalendar {

 var $ac_date = array(
  'year' => "",
  'month' => "",
  'monthname' => "",
  'day' => "",
  'dayname' => ""
 );
 var $ac_date_g = array(
  'year' => "",
  'month' => "",
  'monthname' => "",
  'day' => "",
  'dayname' => ""
 );
 
    var $year;
 var $month;
 var $day;
 var $monthname;
 var $dayname;

 var $julianday;

 var $AC_Adaynames = array(
        0 => "",
        1 => "",
        2 => "",
        3 => "", 
        4 => "",
        5 => "",
        6 => ""
    );
 var $AC_Gdaynames = array(
        '0' => "",
        '1' => "",
        '2' => "",
        '3' => "",
        '4' => "",
        '5' => "",
        '6' => ""
    );
 var $AC_AMonthName = array(
      '1' => "1",
   '2' => "2",
   '3' => "3",
   '4' => "4",
   '5' => "5",
   '6' => "6",
   '7' => "7",
   '8' => "8",
   '9' => "9",
   '10' => "10",
   '11' => "11",
   '12' => "12"
 );  

  /*
  Returns True if is an islamic Leap Year
  @param $ayear : a year !==0.
  */
   function IslamicLeapYear($aYear)
   {
  if ((((11 * $aYear) + 14) % 30) < 11)
   return true;
  else
   return false;  
   }

  /*
  Returns Last day in month during year on the Islamic calendar.
  @param $ayear : a year !==0.
  */
   function LastDayOfIslamicMonth ($Year, $aMonth)
   {
  if ((($aMonth % 2) == 1) or (($aMonth == 12) and IslamicLeapYear($aYear)))
   return 30;
  else
   return 29;
   }
  
   /*
      Constructs a day with a given year, month, and day.
      @param aYear a year !== 0
      @param aMonth a month between 1 and 12
      @param aDate a date between 1 and 31
   */
   function Ac_Day($aYear, $aMonth, $aDate)
   {
  $this->year  = $aYear;
  $this->month = $aMonth;
  $this->acdate  = $aDate;
   }

   /*
   Convert from Georgian date to Islamic date.
      @param GYear a year !== 0
      @param GMonth a month between 1 and 12
      @param GDate a date between 1 and 31
   */
   function GregorianToIslamic($GYear, $GMonth, $GDay)
   {
  $y = $GYear;  
  $m = $GMonth;
  $d = $GDay;
  if (( $y > 1582 ) || (( $y == 1582 ) && ( $m > 10 )) || (( $y == 1582 ) && ( $m == 10 ) && ( $d > 14 )))
  {
   $jd = (int)(( 1461 * ( $y + 4800 + (int)(( $m - 14 ) / 12 )))/ 4) + (int)(( 367 * ( $m - 2 - 12 * ((int)(( $m - 14 ) / 12)))) / 12) - (int)(( 3 * ((int)(( $y + 4900+ (int)(( $m - 14) / 12) ) / 100))) / 4)+ $d - 32075;
  } else {
   $jd = 367 * $y - (int)(( 7 * ( $y + 5001 + (int)(( $m - 9 ) / 7))) / 4) + (int)(( 275 * $m) / 9) + $d + 1729777;
  }
  $this->julianday = $jd;
  $this->ac_date['dayname'] = $this->Ac_getDayName( $jd % 7 );
  $l = $jd - 1948440 + 10632;
  $n = (int)(( $l - 1 ) / 10631);
  $l = $l - 10631 * $n + 354;
  $j = ( (int)(( 10985 - $l ) / 5316)) * ( (int)(( 50 * $l) / 17719)) + ( (int)( $l / 5670 )) * ( (int)(( 43 * $l ) / 15238 ));
  $l = $l - ( (int)(( 30 - $j ) / 15 )) * ( (int)(( 17719 * $j ) / 50)) - ( (int)( $j / 16 )) * ( (int)(( 15238 * $j ) / 43 )) + 29;
  $m = (int)(( 24 * $l ) / 709 );
  $d = $l - (int)(( 709 * $m ) / 24);
  $y = 30 * $n + $j - 30;
  
  $this->ac_date['year'] = $y;
  $this->ac_date['month'] = $m;
  $this->ac_date['day'] = $d;
  $this->ac_date['monthname'] = $this->Ac_getMonthName($m);
  
  return $this->ac_date;
   }

   /*
   Convert from Islamic date to Georgian date.
      @param IYear a year !== 0
      @param IMonth a month between 1 and 12
      @param IDate a date between 1 and 31
   */
   function IslamicToGregorian($IYear, $IMonth, $IDay)
   {
  $y = $IYear;  
  $m = $IMonth;
  $d = $IDay;
  
  $jd = (int)((11*$y+3)/30)+354*$y+30*$m-(int)(($m-1)/2)+$d+1948440-385;
//  $jd = (int)((11*$y+3)/30)+354*y+30*$m-(int)(($m-1)/2)+$d+1948440-385;
  $this->julianday = $jd;
  $this->ac_date_g[dayname] = $this->Ac_getGDayName( $jd % 7 );
  if ($jd> 2299160 )
  {
   $l=$jd+68569;
   $n=(int)((4*$l)/146097);
   $l=$l-(int)((146097*$n+3)/4);
   $i=(int)((4000*($l+1))/1461001);
   $l=$l-(int)((1461*$i)/4)+31;
   $j=(int)((80*$l)/2447);
   $d=$l-(int)((2447*$j)/80);
   $l=(int)($j/11);
   $m=$j+2-12*$l;
   $y=100*($n-49)+$i+$l;
  } else {
   $j=$jd+1402;
   $k=(int)(($j-1)/1461);
   $l=$j-1461*$k;
   $n=(int)(($l-1)/365)-(int)($l/1461);
   $i=$l-365*$n+30;
   $j=(int)((80*$i)/2447);
   $d=$i-(int)((2447*$j)/80);
   $i=(int)($j/11);
   $m=$j+2-12*$i;
   $y=4*$k+$n+$i-4716;
  }

  $this->ac_date_g[day] = $d;
  $this->ac_date_g[month] = $m;
  $this->ac_date_g[year] = $y;
  $this->ac_date_g[monthname] = $this->Ac_getGMonthName($m);
  
  return $this->ac_date_g;
   }

   /**
      Returns the Julian day
      @return the year
   */
   function Ac_getJulianDay()
   {
  return $this->julianday;
   }
  
   /**
      Returns the year of this day
      @return the year
   */
   function Ac_getYear()
   {
  return $this->year;
   }

   /**
      Returns the month of this day
      @return the month
   */
   function Ac_getMonth()
   {
  return $this->month;  
   }

   /**
      Returns the name of the day
      @return the day name
   */
   function Ac_getDayName($aDay)
   {
  switch ($aDay)
  {
   case 0: return $this->AC_Adaynames[0];
   break;

   case 1: return $this->AC_Adaynames[1];
   break;

   case 2: return $this->AC_Adaynames[2];
   break;
   
   case 3: return $this->AC_Adaynames[3];
   break;
   
   case 4: return $this->AC_Adaynames[4];
   break;
   
   case 5: return $this->AC_Adaynames[5];
   break;
   
   case 6: return $this->AC_Adaynames[6];
   break;
  }
   }

   /**
      Returns the English name of the day
      @return the day name
   */
   function Ac_getGDayName($aDay)
   {
  switch ($aDay)
  {
   case 0: return $this->AC_Gdaynames[0];
   break;

   case 1: return $this->AC_Gdaynames[1];
   break;

   case 2: return $this->AC_Gdaynames[2];
   break;
   
   case 3: return $this->AC_Gdaynames[3];
   break;
   
   case 4: return $this->AC_Gdaynames[4];
   break;
   
   case 5: return $this->AC_Gdaynames[5];
   break;
   
   case 6: return $this->AC_Gdaynames[6];
   break;
  }
   }
  
   /**
      Returns the name of the islamic month
      @return the day name
   */
   function Ac_getMonthName($aMonth)
   {
  switch ($aMonth)
  {
   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;
  }
   }
  

   /**
      Returns the month number
      @return the day name
   */
   function Ac_getGMonthName($aMonth)
   {
  switch ($aMonth)
  {
   case 1: return 1;
   break;

   case 2: return 2;
   break;
   
   case 3: return 3;
   break;
   
   case 4: return 4;
   break;
   
   case 5: return 5;
   break;
   
   case 6: return 6;
   break;
   
   case 7: return 7;
   break;
   
   case 8: return 8;
   break;
   
   case 9: return 9;
   break;
   
   case 10: return 10;
   break;
   
   case 11: return 11;
   break;

   case 12: return 12;
   break;
  }
   }
  
  
   /**
      Returns the date of this day
      @return the date
   */
   function Ac_getDate()
   {
  return $this->year;  
   }

   /**
      Returns a day that is a certain number of days away from
      this day
      @param n the number of days, can be negative
      @return a day that is n days away from this one
   */
   function Ac_addDays($n)
   {
  
   }

   /**
      Returns the number of days between this day and another
      day
      @param other the other day
      @return the number of days that this day is away from
      the other (>0 if this day comes later)
   */
   function Ac_daysFrom($Dayother)
   {
   }

}


$acalend = new ICalendar();
$today = getdate();
$dan = $today['mday'];
$mje = $today['mon'];
$god = $today['year'];
 $GDay=$dan;
 $GMonth=$mje;
 $GYear=$god;
 
 $acdate=$acalend->GregorianToIslamic($GYear, $GMonth, $GDay);
 
 $jour=$acdate['dayname'];
 $ADay=$acdate['day'];
 $AMonth=$acdate['monthname'];
 $AYear = $acdate['year'];



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