njajal_admob_di_blog

Pages

Saturday, April 4, 2015

Waktu Shalat [Delphi 7]

Software untuk mencari waktu shalat sudah banyak, termasuk yang dirilis Depag RI (winhisab). Pernah googling buat nyari source-code menghitung waktu shalat untuk di"tempel" di aplikasi yang selama ini saya buat, ternyata yang ditulis pake Delphi gak ketemu. Trus googling algotima hitungan waktu shalat dan dari sekian banyak algoritma (VSOP87 dan ELP2000 (pergerakan bulan), Meous) menurut saya yang paling praktis itu seperti yang ditulis di googlecode ini. Mengapa praktis? algoritma yang lain masih belom sukses ketika saya tulis di Delphi (mungkin kurang teliti di penulisan tanda kurung di persamaan matematisnya :) ). Dan yang 1 ini sudah pantas buat saya "pamer"kan kepada pembaca (yang mau aja lho).

Buat yang ini menggunakan code saya ini, silahkan ... tentunya dengan tanggung-jawab sepenuhnya ada pada anda sendiri, iya to. . . Kan gak mungkin saya bisa nanggung kalo ada kerugian yang mungkin terjadi dari s/w buatan saya ini to ya . . . he he he

to-do : saya pengin melengkapi dengan semua algoritma untuk pembandingan hasil,jadi tunggu release yang lebih lanjutnya (semoga gak berhenti disini, amin)

ini potongan code-nya

<pre><code>
uses math;

var h,tz,sh  :integer;
    B,L,gd,gn:real;
    subuh,terbit,zuhur,ashar,maghrib,isya:real;

procedure hitung(tgl:TDateTime);
var D,T,R,beta,Z,U,Vd,Vn,W : extended;
    j : integer;

    function YearOf(const AValue: TDateTime): Word;
    var LMonth, LDay: Word;
    begin
         DecodeDate(AValue, Result, LMonth, LDay);
    end;

begin
     j :=Trunc(tgl-EncodeDate(YearOf(tgl),1,1)); //= DayOfTheYear(tgl);
     beta:=2*pi*J/365;
     D :=(180/pi)*(0.006918-(0.399912*cos(beta))+(0.070257*sin(beta))-(0.006758*cos(2*beta))+(0.000907*sin(2*beta))-(0.002697*cos(3*beta))+(0.001480*sin(3*beta)));
     T :=229.18*(0.000075+(0.001868*cos(beta))-(0.032077*sin(beta))-(0.014615*cos(2*beta))-(0.040849*sin(2*beta)));
     R :=15*TZ;
     Z :=12+((R-L)/15)-(T/60);
     U :=(180/(15*pi))*arccos((sin((-0.8333-0.0347*sign(H)*sqrt(abs(H)))*(pi/180))-sin(D*(pi/180))*sin(B*(pi/180)))/(cos(D*(pi/180))*cos(B*(pi/180))));
     Vd:=(180/(15*pi))*arccos((-sin(Gd*(pi/180))-sin(D*(pi/180))*sin(B*(pi/180)))/(cos(D*(pi/180))*cos(B*(pi/180))));
     Vn:=(180/(15*pi))*arccos((-sin(Gn*(pi/180))-sin(D*(pi/180))*sin(B*(pi/180)))/(cos(D*(pi/180))*cos(B*(pi/180))));
     W :=(180/(15*pi))*arccos((sin(arctan(1/(Sh+tan(abs(B-D)*pi/180))))-sin(D*pi/180)*sin(B*pi/180))/(cos(D*pi/180)*cos(B*pi/180)));

     subuh  :=Z-Vd;
     terbit :=Z-U;
     zuhur  :=Z;
     ashar  :=Z+W;
     maghrib:=Z+U;
     isya   :=Z+Vn;
end;
</code></pre>


langsung aja, ini link donlot-nya

[update link 2 juli 2017 via mediafire]


2 comments:

  1. pada kasus ini :

    tanggal 29/04/2019
    lintang -7,87682
    bujur = 110,39137

    hasil perhitungan jadi

    Subuh : 04:21:11 > 04:24
    Terbit : 05:39:35 > 05:36
    Zuhur : 11:36:06 > 11:39
    Ashar : 14:57:20 > 14:60 ---- di sini jam menjadi aneh 14:00
    Maghrib : 17:32:38 > 17:35
    Isya : 18:42:46 > 18:45

    ReplyDelete