This Blog

Syndication

News

Awards

Microsoft MVP Logo
Grab this badge here!

Certificates

Transcript ID#: 6724122
Brainbench ASP.NET Certificate
 
Brainbench ASP.NET 2.0 Certificate
 
Brainbench .NET Framework 2.0 Certificate

Ahmad Masykur

var myObject = { "languages" : [ "C#", "VB.NET", "ASP.NET", "Javascript", "SDCC", "Assembler" ] }; //

Prayer Time Algorithm

Berikut ini algoritma sederhana perhitungan waktu sholat untuk daerah Jakarta dan sekitarnya. Untuk daerah lain tinggal disesuaikan latitude dan longitude-nya. Algoritma diambil dari Prayer Time Algorithm di http://www.islamway.com/flashes/7/PrayerTimes.zip

<script language="javascript" type="text/javascript">
<!--
    var today = new Date();
    var J = 0;                                  // Day of year
    var H = 4;                                  // The height above sea level in meters
    var D = 0;                                  // Solar Declination (Degrees)
    var T = 0;                                  // Equation of Time (Minutes)
    var Gd = 15;                                // Dawn’s Twilight Angle (15°-19°)
    var Gn = 15;                                // Night’s Twilight Angle (15°-19°)
    var B = -6.2;                               // Latitude (Degrees)
    var L = 106.8;                              // Longitude (Degrees)
    var TZ = 7;                                 // Time Zone (Hours)
    var R = 0;                                  // Reference Longitude (Degrees)  
    var Sh = 1;                                 // Sh=1 (Shafii) - Sh=2 (Hanafi)
    var firstYear = new Date();
    
    firstYear.setMonth(0);
    firstYear.setDate(1);
    J = (today - firstYear) / 86400000;
	var beta = 2 * Math.PI * J / 365            // Year angle
	D = (180/Math.PI) * (0.006918 - (0.399912 * Math.cos(beta)) + (0.070257 * Math.sin(beta)) - (0.006758 * Math.cos(2 * beta)) + (0.000907 * Math.sin(2 * beta)) - (0.002697 * Math.cos(3 * beta)) + (0.001480 * Math.sin(3 * beta)));
	T = 229.18 * (0.000075 + (0.001868 * Math.cos(beta)) - (0.032077 * Math.sin(beta)) - (0.014615 * Math.cos(2 * beta)) - (0.040849 * Math.sin(2 * beta)));
    R = 15 * TZ;
    var G = 18;
    var Z = 12 + ((R - L) / 15) - (T / 60);
    var U =  (180 / (15 * Math.PI)) * Math.acos((Math.sin((-0.8333 - 0.0347 * (H / Math.abs(H)) * Math.sqrt(Math.abs(H))) * (Math.PI / 180)) - Math.sin(D * (Math.PI / 180)) * Math.sin(B * (Math.PI / 180))) / (Math.cos(D * (Math.PI / 180)) * Math.cos(B * (Math.PI/180))));
    var Vd = (180 / (15 * Math.PI)) * Math.acos((-Math.sin(Gd * (Math.PI / 180)) - Math.sin(D * (Math.PI/180)) * Math.sin(B * (Math.PI / 180))) / (Math.cos(D * (Math.PI/180)) * Math.cos(B * (Math.PI/180))));
    var Vn = (180 / (15 * Math.PI)) * Math.acos((-Math.sin(Gn * (Math.PI / 180)) - Math.sin(D * (Math.PI/180)) * Math.sin(B * (Math.PI / 180))) / (Math.cos(D * (Math.PI/180)) * Math.cos(B * (Math.PI/180))));
    var W =  (180 / (15 * Math.PI)) * Math.acos((Math.sin(Math.atan(1/(Sh+Math.tan(Math.abs(B - D)*Math.PI/180))))-Math.sin(D*Math.PI/180)*Math.sin(B*Math.PI/180))/(Math.cos(D*Math.PI/180)*Math.cos(B*Math.PI/180)));
    function FormatTime(x) {
        var hour =  Math.floor(x);
        var minute = Math.floor((x - hour) * 60);
        var second = Math.floor((((x - hour) * 60) - minute) * 60);
        return (hour + ':' + minute + ':' + second);
    }
    document.writeln('<pre>');
    document.writeln('Fajar   : ' + FormatTime(Z-Vd));
    document.writeln('Terbit  : ' + FormatTime(Z-U));
    document.writeln('Dhuhur  : ' + FormatTime(Z));
    document.writeln('Ashar   : ' + FormatTime(Z+W));
    document.writeln('Maghrib : ' + FormatTime(Z+U));
    document.writeln('Isya    : ' + FormatTime(Z+Vn));
    document.writeln('</pre>'); 
// -->
</script>

Algoritma perhitungan waktu sholat di atas belum begitu akurat, bila ada yang punya algoritma lebih akurat bisa tambahkan comment.

Share this post: | | | |
Published Jul 23 2007, 01:22 PM by cahnom
Filed under:

Comments

 

asuhanto said:

Saya pakai AthanBasic. Di dalam Athan kayaknya banyak metode yang digunakan untuk menentukan waktu Subuh dan Ashar misalnya. Dan masing-masing metode menghasilkan waktu yang berbeda-beda. Pernah suatu kali Athan-ku sudah memperdengarkan Adzan tapi begitu shalat di Mushalla, jam otomatis Mushalla yang kebetulan diinstall juga alarm waktu Shalat berbunyi pada saat hampir salam... Wah, yg bener yg mana nih?

August 3, 2007 8:29 AM
 

Erozsidhy said:

Akurasi PrayerTime sebenarnya ditentukan oleh akurasi Jam yang kita pakai (masih dengan teknologi kristal kuarsa, belum jam-atom) sehingga algoritma apapun yang dipakai tetap belum bisa menolong, kecuali setiap periode waktu tertentu, misalnya tiap hari Jum'at jam yang kita pakai dikalibrasi dengan jam atom (bisa minta tolong rekan yang mempunyai peralatan GPS, sistem Jam di GPS mengikuti Jam-atom di Stasiun induknya).

Algoritma yang anda tulis, sebenarnya sudah layak dipakai. Hanya saja, muslim Indonesia (dan juga Malaysia) menggunakan Down Twilight Angle, Gd = 20 derajat (anda pakai 15 derajat) untuk Subuh dan Night Twilight Angle, Gn = 18 derajat (anda pakai 15 derajat) untuk Isya. Jika Gd dan Gn pada Algoritma anda diganti dengan Gd dan Gn tersebut, saya yakin algoritma anda sudah cocok dengan Prayer Time masjid-masjid di Indonesia. Selamat !

February 16, 2008 5:41 PM
 

cahnom said:

Terima kasih atas masukannya. Masukan Anda sangat membantu saya. Saya akan coba buat komponen / service untuk menghitung waktu sholat.

Terima kasih

February 18, 2008 7:38 AM
 

dani said:

azawala

March 18, 2008 9:38 AM
 

'ilm said:

Boleh saya tanya, apakah fungsi statement ini?:-

J = (today - firstYear) / 86400000;

Dan apakah apa yang terkandung di dalam 'today' dan 'firstYear' itu?

Terima kasih....

July 23, 2008 4:32 PM
 

Maman Sudrajat said:

Ass.Wr.Wb

Algoritma yang anda gunakan telah saya periksa akurasinya dengan cara membandingkan nilai Z (waktu sun transit/ dzuhur)sun rise, sun set (maghrib) dengan data dari :U.S. Naval Observatory

Astronomical Applications Department

Sun and Moon Data for One Day

The following information is provided for Jakarta Indonesia (longitude E106.8, latitude S6.2):

       Thursday

       16 October 2008       Universal Time + 7h            

                        SUN

       Begin civil twilight      05:10                

       Sunrise                   05:31                

       Sun transit               11:38                

       Sunset                    17:46                

       End civil twilight        18:07    

Setahu saya algoritma yang anda tulis merupakan bahan pengembangan untuk dikoreksi, sebaiknya (maaf) jangan digunakan !              

October 17, 2008 8:28 AM
 

Ahmad Masykur said:

Prayer Time is time schedule for moslem prayer. This widget knows the daily prayer time based on user

January 11, 2009 7:53 PM
 

Ahmad Masykur said:

Prayer Time Widget for BlogEngine.NET 1.4.x

January 11, 2009 7:54 PM