« 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