Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Soru Merkezi  > C#.NET & VB.NET Soru Merkezi > Çalar saat için DateTime Hatası!!!

Çalar saat için DateTime Hatası!!! 16.01.2010 23:16:13

mucahitaytekin

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 { }

 

24.01.2010 17:21:51

semgoksu
Cvp: Çalar saat için DateTime Hatası!!!

Hata mesajını yazsaydın birşeyler yazabilirdim :)

25.01.2010 11:21:23

mucahitaytekin
Cvp: Çalar saat için DateTime Hatası!!!

Sem Abi zaten hata vermiyor verse ona göre araştırmaya çalışırdım zaten:)

Mantık hatası var sanırım program çalışıyor ama if koşulların içine girmiyor.Normalde kurulu saat o anki saatten büyük olması gerekirken long tipine çevirdiğimiz zaman o anki saat daha büyük görünüyor...Yani program patlamıyor mantık olarak bir hatam var ama çözemedim neden böyle bir sorun yaşıyorum...


27.01.2010 09:57:24

semgoksu
Cvp: Çalar saat için DateTime Hatası!!!

Zaman farkına bakacaksan neden TimeSpan'ı kullanmıyorsun? Debug ediğ değelere baktın mı? En kötüsü if'ten hemen önce her iki değeri de ekrana yazdır ki aldığı değerleri gör.

27.01.2010 11:43:04

mucahitaytekin
Cvp: Çalar saat için DateTime Hatası!!!

Break Point ile kontrol ettim küçük olması gereken deger büyük çıkıyor neden olduğunu çözemedim...TimeSpan kullanımını bilmiyorum iyi bir kaynak verebilir misiniz???

27.01.2010 15:33:37

semgoksu
Cvp: Çalar saat için DateTime Hatası!!!

Google.Com :)

27.01.2010 15:36:59

mucahitaytekin
Cvp: Çalar saat için DateTime Hatası!!!

google dayı gereksinimlerimi karşılayamıyor :)

Ama biraz daha araştırıyım o zaman...

Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.