Jump to content
Sign in to follow this  
almhajer

طلب مساعدة في التحويل من ميلادي الى هجري وما الخطا

Recommended Posts

السلام عليكم بارك الله فيكم وجزاكم الله الف خير وجعله حجة لكم لاعليكم يارب العالمين

الاخ سالم الجعيدي

والاخوة الاعضاء

يرجى االطلاع على الكود البرمجي التالي

ولا ادري ماهو الخطا ناتج السنة صحيح

والشهر صحيح ولكن الايام

لاتاتي صحيحة وتبعت وانا احاول واتابع النص البرمجي لمدة يومين فارجو منكم ان تنظرو في هذ الكود البرمجي

واحاطتي بالمشكلة وجزاكم الله الف خير

function Hjre_To_Convert($day,$month,$year){

#التحقق اذا كان الشهر اكبر من 2 او يساوي 2
#أ = الشهر + 12
#ب = السنة الميلادية – 1
if($month<=2){
	$A=$month+12;#ا
	$B=$year-1;#ب

}

#وإن كان الشهر الميلادي أكبر من 2 فإن
#أ = الشهر
#ب = السنة
if($month>2){

	$A=$month;#ا
	$B=$year;#ب
}

#ج = ب ÷ 100 ( إحذف الكسر مطلقاً)
$J=floor($B/100);#ج

#د = ب ÷ 400 ( احذف الكسر مطلقاً )
$D=floor($B/400);#د\

#ع = 2 – ج + د
$C=2-$J+$D;#ع

#ملاحظة : إذا كان حسابك لتاريخ يقع قبل 15 أكتوبر 1582 م
#فإن ع = صفر دائماً
#التحقق من ان التاريخ اصغر من 15/10/1582م

$Checked_Date=$year.$month.$day;#التاريخ المراد فحصه
settype($Checked_Date,'int');

$OldDate=15821015;
#إن كان حسابك لتاريخ أصغر من 15 أكتوبر من عام 1582 فإن
if($Checked_Date<$OldDate){
	$C=0;#ع
}

#و = ( ب + 4716 ) × 365.25 ( احذف الكسر مطلقاً )
$O=floor(($B+4716)*365.25);#و


#ز = ( أ + 1 ) × 30.6001 ( أحذف الكسر مطلقاً )
$Z=floor(($A+1)*30.6001);#ز


#ح = الأيام + ز + و + ع – 1524.5
$H=$day+$Z+$O+$C-1524.5;#ح

#ط = ح – 1937806.5
$T=$H-1937806.5;#ط

#ك = ( ط – 1 ) ÷ 10631 ( احذف الكسر مطلقاً )
$k=floor(($T-1)/10631);

#ل = ( ط + 354 ) – 10631 × ك
$L=($T+354)-10631*$k;

#م = ( 10985 – ل ) ÷ 5316 (احذف الكسر )
$M=floor((10985-$L)/5316);


#ن = ( 50 × ل ) ÷ 17719 ( احذف الكسر )
$N=floor((50*$L)/17719);


#س = ل ÷ 5670 ( احذف الكسر ) 
$S=floor($L/5670);

#ف = ( 43 × ل ) ÷ 15238 ( احذف الكسر )
$F=floor((43*$L)/15238);


#ق = م × ن + س × ف 
$Q=$M*$N+$S*$F;

#ص = ( 30 – ق ) ÷ 15 ( احذف الكسر ) 

$HS=floor((30-$Q)/15);


#ر = ( 17719 × ق ) ÷ 50 ( احذف الكسر ) 
$R=floor((17719*$Q)/50);


#ش = ق ÷ 16 ( احذف الكسر ) 
$SH=floor($Q/16);


#ت = ( 15238 × ق ) ÷ 43 ( احذف الكسر ) 
$T=floor((15238*$Q)/43);


#ث = ل – ص × ر – ش × ت + 29 

$TH=$L-$HS*$R-$SH*$T+29;

#الشهر الهجري = ( 24 × ث ) ÷ 709 ( احذف الكسر ) 
echo$month_hajre=floor((24*$TH)/709);

#غ = ( 709 × الشهر الهجري ) ÷ 24 ( احذف الكسر ) 
$khen=floor((709*$month_hajre)/24);


#اليوم الهجري = ث – غ 
echo$day_hjre=$TH-$khen;


#السنة الهجرية = 30 × ك + ق – 30 
echo $year_hjre=30*$k+$Q-30;


}

مع العلم ان الكود البرمجي مكتوب بلغة البرمجة php

والدالة floor لازالة الكسور وبارك الله فيكم وجزاكم الله الف خير

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×