Berikut adalah fungsi untuk mengubah tanggal Masehi ke Hijriyah dan sebaliknya. Kode program dalam bahasa Pascal ( Delphi ), tetapi saya rasa mudah untuk dikonversi ke bahasa pemrograman lain , juga saya beri sedikit keterangan. Algoritma saya temukan beberapa tahun yang lalu dari internet tanpa sumber yang jelas. Semoga bermanfaat.
// Mengambil nilai integer dari bilangan real Function IntPart(FloatNum : real) : integer; Begin if FloatNum < -0.0000001 then
Result := ceil(FloatNum-0.0000001) else Result := Floor(FloatNum + 0.0000001); End; { Function HtoM(Tgl : TdateTime) : TdateTime; Algoritma diperoleh dari internet tanpa sumber } Function ConvertDate(HijriToMasehi:Boolean; const y,m,d:Word):TDate; var jd,L,N,i,J,K :integer; Rm,Rd,Ry : integer; //result Tgl : TDateTime; y2,m2,d2 : Word; begin { Merubah nilai y-m-d menjadi variabel TDateTime ( Tgl) } EncodeDate(y,m,d,Tgl); { Merubah Variabel Tgl menjadi tahun=y2, bulan=m2 dan day=d2 } DecodeDate(Tgl,y2,m2,d2); { HijriyahDiff = 0 atau bisa +1 atau -1 untuk menyesuaikan jika kemungkinan berbeda dengan ruqyah } d2 := d2 + HijriyahDiff; if HijriToMasehi then // Konversi Hijriyah ke Masehi Begin jd := intPart((11*y2+3)/30)+354*y2+30*m2-intPart((m2-1)/2)+ d2+1948440-385; if (jd> 2299160 ) then Begin 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); Rd:= L-intPart((2447*j)/80); L := intPart(J/11); Rm:= J+2-12*L; Ry:= 100*(N-49)+i+L; End else Begin 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); Rd:= i-intPart((2447*J)/80); i := intPart(J/11); Rm:= J+2-12*i; Ry:= 4*K+N+i-4716; End; { Hasil fungsi Tanggal, Bulan dan Tahun } Result.Day := Rd; Result.Month := Rm; Result.Year := Ry; end else // Konversi Masehi ke Hijriyah Begin if ((y2>1582) OR((y2=1582) AND (m2>10))OR((y2=1582) AND (m2=10) AND (d2>14))) then jd := intPart((1461*(y2+4800+intPart((m2-14)/12)))/4)+ intPart((367*(m2-2-12*(intPart((m2-14)/12))))/12)- intPart((3*(intPart( (y2+4900+intPart((m2-14)/12))/100)))/4)+d2-32075 else jd := 367*y2-intPart((7*(y2+5001+intPart((m2-9)/7)))/4)+ intPart((275*m2)/9)+d2+1729777; 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; Rm := intPart((24*L)/709); Rd := l-intPart((709*Rm)/24); Ry := 30*n+j-30; { Hasil fungsi Tanggal, Bulan dan Tahun } Result.Day := Rd; Result.Month := Rm; Result.Year := Ry; End; end;
0 Responses So Far:
:)) :)] ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} ~x( :-t b-( :-L x( =))