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.
Selam,
Burada asp olarak var. Kaynağı görüntüle dediğinizde kodlar çıkıyor :
http://prayer.al-islam.com/convert.asp
Analyzer
kaynagını nasıl görüntüleyecez bir türlü beceremedim :(
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
}
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;
}
lookup table yap diyecem ama kolayına kaçmış olacaz.