İftar ve Sahur vakti
merhaba arkadaşlar, hayırlı ramazanlar...
Bu ara birçok internet sitesinde görüdüğümüz iftar ve sahur zamanına nekadar kaldığını php ile nasıl yapabiliriz? bununla ilgili hazır bir fonksiyon varmı mantığı nedir bu konuda bilgilerinizi paylaşabilirseniz sevinirim.
sorduğum ezan vakitlerini alma değil...
iftardan önce iftara ne kadar kaldığı iftardan sonra ise sahura nekadar kaldığı.
Bu işlemi PHP ile değil front-end kısmında javascript ile yapabilirsiniz.
Öncelikle namaz vakitlerini veren bir API yardımıyla bugünün ve yarının namaz vakitlerini elde etmelisiniz.
Google'de "namaz vakitleri api" yazdığım zaman çıkan sitelerden birinde namaz vakitlerinin güzel bir api ile sunulduğunu gördüm.
Kaynak: namaz-vakti-api.herokuapp.com
Bu sitede API'yı nasıl kullanmanız gerektiği yazıyor.
Önce ülkenizin kodunu buluyorsunuz. Türkiye'nin kodu 2 olarak verilmiş.
Sonra ülke kodunuzu kullanarak namaz vaktini alacağınız şehrin kodunu buluyorsunuz: Şehir kodları Örneğin Adana'nın kodu 500 olarak verilmiş.
Sonra da şehir kodunu kullanarak ilçe kodunu buluyorsunuz ki bize asıl lazım olan bu: İlçe kodları Adana'yı bilmiyorum ama sanırım merkezin kodu 9146 olarak verilmiş.
Bu kodu kullanarak bu konumun namaz vakitlerini alabiliyorsunuz: Namaz Vakitleri
Şu anda bugünün sahur vaktinden öncede miyiz, bugünün sahur ve akşamı arasında mıyız yoksa yarının sahurundan önce miyiz? Bunu tespit etmelisiniz.
Sonra da şu andan sonraki ilk hedef tarihle şu anın arasındaki farkı her saniye ekrana yazdırabilirsiniz.
var targetLocationId = 9146;
$("body").prepend("\
<div style='min-height:50px; background:#ccc; display:flex; align-items:center; justify-content:center;' id='test'>\
<span id='test-countdown-name'></span>\
<span id='test-countdown' style='margin-left:5px;'></span>\
</div>\
");
var $test = $("body > #test").eq(0);
$countdownName = $test.find("#test-countdown-name");
$countdown = $test.find("#test-countdown");
var now = new Date();
var tomorrow = new Date(now);
tomorrow.setDate(tomorrow.getDate()+1);
$.ajax({
type:"get",
url:"https://namaz-vakti-api.herokuapp.com/data?region="+targetLocationId,
success:function(response){
var todayImsak = response[0][1].split(":");
var todayAksam = response[0][5].split(":");
var tomorrowImsak = response[1][1].split(":");
var todayImsakDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), todayImsak[0], todayImsak[1], 0);
var todayAksamDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), todayAksam[0], todayAksam[1], 0);
var tomorrowImsakDate = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), tomorrowImsak[0], tomorrowImsak[1], 0);
if(now <= todayImsakDate) $countdownName.text("Sahura kalan süre:");
else if(now > todayImsakDate && now <=todayAksamDate) $countdownName.text("İftara kalan süre:");
else $countdownName.text("Sahura kalan süre:");
calculateCountdown(todayImsakDate, todayAksamDate, tomorrowImsakDate, $countdown);
setInterval(function() {
calculateCountdown(todayImsakDate, todayAksamDate, tomorrowImsakDate, $countdown);
},1000);
}
});
function calculateCountdown(imsakDate, aksamDate, tomorrowImsakDate, $element) {
now = new Date();
var targetDate = null;
if(now <= imsakDate) targetDate = imsakDate;
else if(now > imsakDate && now <=aksamDate) targetDate = aksamDate;
else targetDate = tomorrowImsakDate;
var hours = parseInt((targetDate - now) / (1000 * 60 * 60) % 24);
var minutes = parseInt((targetDate.getTime() - now.getTime()) / (1000 * 60) % 60);
var seconds = parseInt((targetDate.getTime() - now.getTime()) / (1000) % 60);
$element.text(hours + " saat " + minutes + " dakika " + seconds + " saniye");
}
Bu sitede (prototurk) JQuery kullanıldığı için, yukarıda verdiğim örnek kodu bu sayfanın firebug konsoluna yapıştırarak çıktısını görebilirsiniz.
Sayfanın üstünde bir <div>
oluşacak ve içinde geri sayım belirecektir.
Kullanıcının kendi konumunu kendi seçtiği bir sistem geliştirecekseniz yine bu API size yardımcı olacaktır.
O kısımlar bu sorunun kapsamını aştığı için cevabı burada kesiyorum. Örnek kodu inceleyip geliştirerek istediğiniz sonucu alabilirsiniz.