Tanggal Hijriah dengan Delphi

Ass. wr.wb... pagi yang indah saatnya buat beraktifitas kembali dengan penuh olahraga jemari dengan sang keyboard. heheheee....


Pagi ne ane ingin berbagi dikit ilmu neh tentang bagaimana membuat kalender / tanggal Hijriah, mungkin sudah artikel yang bekaitan dengan ini, setidaknya ingin mengingatkan kembali (mungkin file ilang kali yah...!!!! ^_^) okey sebelum kita mulai membuat tanggal hijriah menggunakan delphi, temen2 siepin segelas susu anget juga boleh asal gk usah tuaq ja yah (kalo tuaq manis juga boleh. ^_^)... Sudah siap dengan minuman dan cemilah, temen2 buka delphinya dan copy paste source dibawah ini ke form yang temen buat tadi :







Kalo sudah, dibawah ini ada sebuah function TglHijriah yang berfungsi merubah dari tanggal masehi ke tanggal Hijriah.

function TglHijriah(AValue: TDateTime; HijriDiff: integer=0): TDateTime;
var Y,M,D: word; Calculate,temp1,temp2,temp3: integer;
begin
DecodeDate(AValue, Y, M, D);
Inc(D,HijriDiff);
if ((Y>1582) or ((Y=1582) and (M>10)) or ((Y=1582) and (M=10) and (D>14))) then

Calculate:=Trunc((1461*(Y+4800+Trunc((M-14)/12)))/4)+Trunc((367*(M-2-12*(Trunc((M-14)/12))))/12)-Trunc((3*(Trunc((Y+4900+Trunc((M-14)/12))/100)))/4)+D-32075
else Calculate:=367*Y-Trunc((7*(Y+5001+Trunc((M-9)/7)))/4)+Trunc((275*M)/9)+D+1729777;temp1:=Calculate-1948440+10632;
temp2:=Trunc((temp1-1)/10631);
temp1:=temp1-10631*temp2+354;
temp3:=(Trunc((10985-temp1)/5316))*(Trunc((50*temp1)/17719))+(Trunc(temp1/5670))*(Trunc((43*temp1)/15238));
temp1:=temp1-(Trunc((30-temp3)/15))*(Trunc((17719*temp3)/50))-(Trunc(temp3/16))*(Trunc((15238*temp3)/43))+29;
M:=Trunc((24*temp1)/709);
D:=temp1-Trunc((709*M)/24);
Y:=30*temp2+temp3-30;
Result:=EncodeDate(Y,M,D);
end;


Setelah source code diatas dicopy di bawah implementation {$R *.dfm} kemudian dapa Form Show atau form create copy perintah dibawah ini :

procedure TForm1.FormCreate(Sender: TObject);
var tgl:TDate; bln:String[14];
begin

Tgl:=TglHijriah(Now);

Label1.Caption:=FormatDateTime('DDDD, dd MMMM yyyy',Now)+' Masehi';

Label2.Caption:=FormatDateTime('dd MM yyyy',tgl)+' Hijriah';

Case StrToInt(FormatDateTime('MM',tgl)) of

1: bln:='Muharram';

2: bln:='Shafar';
3: bln:='Rabi’ul Awal';

4: bln:='Rabi’ul Akhir';

5: bln:='Jumadil Awal';
6: bln:='Jumadil Akhir';

7: bln:='Rajab';

8: bln:='Sya’ban';

9: bln:='Ramadhan';

10: bln:='Syawal';

11: bln:='Zulqaidah';

12: bln:='Zulhijjah';

End;
Label3.Caption:=FormatDateTime('dd ',tgl)+bln+FormatDateTime(' yyyy',tgl)+' Hijriah';

end;


Nah kalo udah selese yah tinggal dijalankan aja dah, pada label 1 menunjukkan tanggal Masehi, Label 2 dan 3 tanggal Hijriahnya.


Semoga bermanfaat buat temen2 yah..!!! ^_^
Source code dan Aplikasi bisa di download disini

Comments