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.