« Back to profile of ahmed_dark

  • php

    دالة لتحويل التاريخ الميلادي الى هجري

    هي دالة نقوم بتمرير التاريخ الميلادي بالشكل 2011-1-1 وتقوم الدالة بتحويله إلى ما يقابله بالتاريخ الهجري وهناك نسبة خطأ تساوي واحد يوم فقط ويمكن تصحيحها كما هو موضح بالكود

    						 function ConvertToHejryDate($goe_date)
        {
	        $s_day = date('d',strtotime($goe_date));
			$s_month = date('m',strtotime($goe_date));
			$s_year = date('Y',strtotime($goe_date));
			
			if (($s_year>1582)||(($s_year==1582)&&($s_month>10))||(($s_year==1582)&&($s_month==10)&&($s_day>14))) 
			{
			    $jd=ard_int((1461*($s_year+4800+ard_int(($s_month-14)/12)))/4);
			    $jd+=ard_int((367*($s_month-2-12*(ard_int(($s_month-14)/12))))/12);
			    $jd-=ard_int((3*(ard_int(($s_year+4900+ard_int(($$s_month-14)/12))/100)))/4);
			    $jd+=$s_day-32075;
			} 
			else  
			{
			        $jd = 367*$s_year-ard_int((7*($s_year+5001+ard_int(($s_month-9)/7)))/4)+ard_int((275*$s_month)/9)+$s_day+1729777;
			}
			
			$l = $jd-1948440+10632;
			$n = ard_int(($l-1)/10631);
			$l = $l-10631*$n+355;  // لتصحيح التاريخ في حالة وجود خطأ به نكتب 355 بدلا من 354: 
			$j = (ard_int((10985-$l)/5316))*(ard_int((50*$l)/17719))+(ard_int($l/5670))*(ard_int((43*$l)/15238));
			$l= $l-(ard_int((30-$j)/15))*(ard_int((17719*$j)/50))-(ard_int($j/16))*(ard_int((15238*$j)/43))+29;
			$s_month = ard_int((24*$l)/709);
			$s_day = $l-ard_int((709*$s_month)/24);
			$s_year = 30*$n+$j-30;
			$arr_hejry_date['d'] = "$s_day";
			$arr_hejry_date['m'] = "$s_month";
			$arr_hejry_date['y'] = "$s_year";
		
			$arr_this_hejry_date = Get_hejry_date($s_year,$s_month,$s_day);
			$this_h_year 	= $arr_hejry_date['y'];
			$this_h_month 	= $arr_hejry_date['m'];
			$this_h_day 	= $arr_hejry_date['d'];
			$this_h_month 	= (strlen($s_month) == 1)?"0$s_month":"$s_month";
			$this_h_day 		= (strlen($s_day) == 1)?"0$s_day":"$s_day";
			return  "$s_year-$s_month-$s_day";
		
        }    			         
Add comment
To add a comment, please : Login or Sign up