Merhaba arkadaşlar ben bir çalar saat yapmak istiyorum yanlız bir yerde mantık hatası var bir türlü çözemedim...
Öncelikle programın işleyişini anlatayım.
Program çalıştığında önce veri tabanından ilgili tarih kontrol ediliyor ve o anki tarihe ait saat bilgilerini static bir classta tutuyor...
Class Kodları :
public static DateTime sabah = Convert.ToDateTime("00:00:00");public static DateTime ogle = Convert.ToDateTime("00:00:00");public static DateTime ikindi = Convert.ToDateTime("00:00:00");public static DateTime aksam = Convert.ToDateTime("00:00:00");public static DateTime yatsi = Convert.ToDateTime("00:00:00");
Bunlara değeri tarihe baktıktan sonra atıyorum kodları şu şekilde :
while(dr.Read()){
if (dr["Tarih"].ToString() == nowDate.ToString()){
EzanSaatleri.SaatTut.sabah = Convert.ToDateTime(dr[3]);EzanSaatleri.SaatTut.ogle = Convert.ToDateTime(dr[4]);EzanSaatleri.SaatTut.ikindi = Convert.ToDateTime(dr[5]);EzanSaatleri.SaatTut.aksam = Convert.ToDateTime(dr[6]);EzanSaatleri.SaatTut.yatsi = Convert.ToDateTime(dr[7]); }else { }}
sonra timer in Tick olayında saatBak() methodunu çalıştırıyorum...
Kodlar şu şekilde ki sorunum burda kaynaklanıyor....:SORUNUN OLDUĞU YERLERİ KOYU KIRMIZI YAPTIM...
SORUN : static deger olarak atadığım saatleri long tipine ceviriyorum datetime ait ticks özelliğinide kullanarak.
Normalde diyelim sabahSaati 05:40 ve programın calıştığı anki saat 03:20 normalde sabahSaatinin long tipindeki degeri o anki saatten fazla olması gerekirken o anki saatin degeri daha büyük görünüyor ve bu yüzden if koşullerinın içine girmeden es geçiyor...Yardımlarınız İçin Şimdiden teşekkür ederim....
DateTime kurulanSaat; long calarsaat;long sabahSaati = EzanSaatleri.SaatTut.sabah.Ticks;long ogleSaati = EzanSaatleri.SaatTut.ogle.Ticks;long ikindiSaati = EzanSaatleri.SaatTut.ikindi.Ticks;long aksamSaati = EzanSaatleri.SaatTut.aksam.Ticks;long yatsiSaati = EzanSaatleri.SaatTut.sabah.Ticks;DateTime Suan = Convert.ToDateTime(DateTime.Now.ToString().Substring(11, 8));long suan = Suan.Ticks;if (sabahSaati >suan ){
kurulanSaat = Convert.ToDateTime(EzanSaatleri.SaatTut.sabah.ToString("hh:mm:ss"));vakit = "Sabah Ezanna";calarsaat = EzanSaatleri.SaatTut.sabah.Ticks;}
else if (ogleSaati >suan){
kurulanSaat = Convert.ToDateTime(EzanSaatleri.SaatTut.ogle.ToString("hh:mm:ss"));vakit = "le Ezanna";calarsaat = EzanSaatleri.SaatTut.ogle.Ticks;}
else if (ikindiSaati >suan){
kurulanSaat = Convert.ToDateTime(EzanSaatleri.SaatTut.ikindi.ToString("hh:mm:ss"));vakit = "kindi Ezanna";calarsaat = EzanSaatleri.SaatTut.ikindi.Ticks;}
else if (aksamSaati > suan){
kurulanSaat = Convert.ToDateTime(EzanSaatleri.SaatTut.aksam.ToString("hh:mm:ss"));vakit = "Akam Ezanna";calarsaat = EzanSaatleri.SaatTut.aksam.Ticks;}
else
{
kurulanSaat = Convert.ToDateTime(EzanSaatleri.SaatTut.yatsi.ToString("hh:mm:ss"));vakit = "Yats Ezanna";calarsaat = EzanSaatleri.SaatTut.yatsi.Ticks;}
System.TimeSpan zaman;zaman= kurulanSaat.Subtract(Suan);
toplamsaniye = Convert.ToInt32(zaman.TotalSeconds);if (calarsaat > suan){
if (calarsaat != suan){
toplamsaniye = toplamsaniye - 1;
}else{}}else { }