Miladi(gün,ay,yıl) takvimi ,Hicri(gün,ay,yıl) takvime ç

Başlatan zafzaf82, 10 Ekim 2008, 19:12:44

zafzaf82

merhaba arkadaşlar Miladi Takvimi Hicir Takvime nasıl dönüştürebilir. nette biraz araştırma yaptım sadece miladi yılı hicri yıla dönüştürme formulu var. Ancak ben gün ay ve yıl olarak dönüşüm yapmak istiyorum.

Örnegin; 10-10-2008 miladi tarihin Hicri Takvimde karşılıgı 9-10-1429 bu şekilde dönüşüm yapabilmek için önerilerini bekliyorum.
Mikroişlemci bi araçtır, amaç değil.....

Analyzer

Selam,

Burada asp olarak var. Kaynağı görüntüle dediğinizde kodlar çıkıyor :

http://prayer.al-islam.com/convert.asp

Analyzer
Üşeniyorum, öyleyse yarın!

zafzaf82

kaynagını nasıl görüntüleyecez bir türlü beceremedim :(
Mikroişlemci bi araçtır, amaç değil.....

zafzaf82

http://dione.astro.science.ankara.edu.tr/muyes/cesit/hicri.htm

bu sayfadaki çevrim çok güzel ancak ben burdaki dönüşümü mikro ile yapmak isiyorum.  bu sayfanın kod kaynagını göster dedim aşagıdaki gibi kodlar çıktı. arada yapılan işlemi mikro ile yaptım ama sonuç hatalı çıkıyo aynı formulu matlab la da yaptım sonuç yinede hatalı çıkıyo. ben bu kodu keil c de yazmak istiyorum yardımcı olabilir misiniz.
function intPart(floatNum){
if (floatNum< -0.0000001){
	 return Math.ceil(floatNum-0.0000001)
	}
return Math.floor(floatNum+0.0000001)	
}
function weekDay(wdn){
					if(wdn==0){
						return "Pazartesi"
						}
					if(wdn==1){
						return "Salı"
						}
					if(wdn==2){
						return "Çarşamba"
						}
					if(wdn==3){
						return "Perşembe"
						}
					if(wdn==4){
						return "Cuma"
						}
					if(wdn==5){
						return "Cumartesi"
						}
					if(wdn==6){
						return "Pazar"
						}
	return ""

}
function chrToIsl(arg) {
	d=parseInt(arg.CDay.value)
	m=parseInt(arg.CMonth.value)
	y=parseInt(arg.CYear.value)
					if ((y>1582)||((y==1582)&&(m>10))||((y==1582)&&(m==10)&&(d>14))) 
						{
						jd=intPart((1461*(y+4800+intPart((m-14)/12)))/4)+intPart((367*(m-2-12*(intPart((m-14)/12))))/12)-
	intPart( (3* (intPart(  (y+4900+    intPart( (m-14)/12)     )/100)    )   ) /4)+d-32075
						}
						else
						{
						jd = 367*y-intPart((7*(y+5001+intPart((m-9)/7)))/4)+intPart((275*m)/9)+d+1729777
						}
					arg.JD.value=jd
					arg.wd.value=weekDay(jd%7)
					l=jd-1948440+10632
					n=intPart((l-1)/10631)
					l=l-10631*n+354
					j=(intPart((10985-l)/5316))*(intPart((50*l)/17719))+(intPart(l/5670))*(intPart((43*l)/15238))
					l=l-(intPart((30-j)/15))*(intPart((17719*j)/50))-(intPart(j/16))*(intPart((15238*j)/43))+29
					m=intPart((24*l)/709)
					d=l-intPart((709*m)/24)
					y=30*n+j-30

	arg.HDay.value=d
	arg.HMonth.value=m
	arg.HYear.value=y
}
function islToChr(arg) {
	d=parseInt(arg.HDay.value)
	m=parseInt(arg.HMonth.value)
	y=parseInt(arg.HYear.value)
	jd=intPart((11*y+3)/30)+354*y+30*m-intPart((m-1)/2)+d+1948440-385
	arg.JD.value=jd
	arg.wd.value=weekDay(jd%7)
					if (jd> 2299160 )
						{
						 l=jd+68569
						 n=intPart((4*l)/146097)
						l=l-intPart((146097*n+3)/4)
						 i=intPart((4000*(l+1))/1461001)
						l=l-intPart((1461*i)/4)+31
						 j=intPart((80*l)/2447)
						d=l-intPart((2447*j)/80)
						l=intPart(j/11)
						m=j+2-12*l
						y=100*(n-49)+i+l
						}	
					else	
						{
						 j=jd+1402
						 k=intPart((j-1)/1461)
						 l=j-1461*k
						 n=intPart((l-1)/365)-intPart(l/1461)
						 i=l-365*n+30
						j=intPart((80*i)/2447)
						d=i-intPart((2447*j)/80)
						i=intPart(j/11)
						m=j+2-12*i
						y=4*k+n+i-4716
						}

	arg.CDay.value=d
	arg.CMonth.value=m
	arg.CYear.value=y

}
Mikroişlemci bi araçtır, amaç değil.....

zafzaf82

C de kodu aşagıdaki şekilde yazdım ama o algoritmada gunleri yanlış hesaplıyor :(

MILADItoHICRI()
{
	Ayy  = ay;
	Gunn = gun;
	Yill = (yil+2000);

	a2 = ceil((Ayy-14)/12);
	a1 = ceil((1461*(Yill+4800+a2))/4);
	a3 = ceil((367*(Ayy-2-12*a2))/12);
	a5 = ceil((Yill+4900+a2)/100);
	a4 = ceil((3*(a5))/4);
    
	jd = a1 + a3 - a4 + Gunn - 32075;

    L = jd - 1948440 + 10632;

    N = ceil((L-1)/10631);

    L = L - 10631 * N + 354;

	a1 = ceil((10985-L)/5316);
	a2 = ceil((50*L)/17719);
	a3 = ceil(L/5670);
	a4 = ceil((43*L)/15238);
    J  = (a1)*(a2)+(a3)*(a4);

	a1 = ceil((30-J)/15);
	a2 = ceil((17719*J)/50);
	a3 = ceil(J/16);
	a4 = ceil((15238*J)/43);
    L  = L-(a1)*(a2)-(a3)*(a4)+29;
    
	Ayy = ceil((24*L)/ 709);
	
	a1 = ceil((709*Ayy)/ 24);
    Gunn = ceil(L-a1);
    
	Yill = (30* N + J -30);

	h_gun = Gunn;
	h_ay  = Ayy;
	h_yil = Yill;  
}
Mikroişlemci bi araçtır, amaç değil.....

mihri

lookup table yap diyecem ama kolayına kaçmış olacaz.
"Eppur si muove!"