iki tarih arasındaki çalışma gün sayısı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen aslangeri »

@lostsoul;
isterse aradaki fark iki yıl olsun. TatilGunumu metodu için önemli olan gün ve ay. üstelik bu durumda kullanıcının verilen tarih aralığındaki tüm resmi tatilleri hesaplayıp parametre olarak vermesi gerekiyor.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen Lost Soul »

aslangeri yazdı:@lostsoul;
isterse aradaki fark iki yıl olsun. TatilGunumu metodu için önemli olan gün ve ay. üstelik bu durumda kullanıcının verilen tarih aralığındaki tüm resmi tatilleri hesaplayıp parametre olarak vermesi gerekiyor.
bütüm bayramları miladi takvime dayalı bir ülke olsaydık dediklerin doğru olurdu ama
gel gör ki ramazan ve kurban bayramı tatilleri her yıl 11 gün geriye atıyor :)
ondan dolayı her yılın 30 Ağustosu zafer bayramıdır dediğimiz gibi
her yılın 16 Kasımı kurban bayramıdır diyemeyiz. ondan dolayı yılı da belirtmek gerekir.


eğer kullanıcı tarih aralığını aynı yıl içinden seçecek ise dediğin doğru ay ve gün belirtmesi yeterli olacak.
ama tarih aralığının başlangıcı 2010 dan sonu 2011 den veriflecek ise yıl ile verilmesi gerekir elbet.
e tabi bu fonksiyon genel amaçlı yazılmış bir fonksiyon.
isteyen kendine göre değiştirsin dimi ama :)
TURGUT
Üye
Mesajlar: 54
Kayıt: 27 May 2005 03:19
Konum: ANKARA/ETİMESGUT

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen TURGUT »

Kod: Tümünü seç

 
const
resmitatilsayisi=6;
resmitatiller:array[1..resmitatilsayisi]of string[6]=
('01.01','23.04','01.05','19.05','30.08','29.10');
  function tatiledenkgeliyormu(tarih:tdatetime):Boolean;
  var
  i:byte;
  begin
    result:=(DayOfWeek(tarih)=1) or (DayOfWeek(tarih)=7);
    if not result then
    begin
      //resmi tatil günlerini kontrol et
      for i:=1 to resmitatilsayisi do
         result:=result or (tarih=strtodate(resmitatiller[i]+formatdatetime('.YYYY',date)));
    end;
  end;
procedure TForm6.Query1CalcFields(DataSet: TDataSet);
var
t1,t2:Tdate;
Gun,I,calisma:Integer;
begin

t1:=query1otarih.AsDateTime;
t2:=query1btarih.AsDateTime;
Gun:=daysbetween(t2,t1); // iki tarih arası gün farkı
calisma:=0;
FOR I:=1 To gun do
begin
    if tatiledenkgeliyormu(t1)=false then
    begin
    calisma:=calisma+1;
    end;
IncDay(t1);
end;
query1gun.value:=calisma;
end;
Yukarıdaki koda göre 02.02.2010 ve 24.02.2010 ttarihleri arasındaki çalışma gün sayısı kaçtır?ne yaparsam yapayım değeri 22 olarak döndürüyor. Sanki sıkıntı değişkenlere olması gereken değerler atanmıyordu döngüler sartı sağlamadığından hep aynı değeri alıyorum.
Değişkenleri showmessage ve edite yazdırdım sorun yok gibi,Sorun nerde; Daha Hafta sonu ve değişmeyen tatil günlerini halledemedim ki dini taillere geçeyim.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen Lost Soul »

Edit: Durum değişmiş :)
buradaki verdiğim fonksiyona baktrınız mı
viewtopic.php?p=152101#p152101
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen aslangeri »

...bütüm bayramları miladi takvime dayalı bir ülke olsaydık dediklerin doğru olurdu ama
gel gör ki ramazan ve kurban bayramı tatilleri her yıl 11 gün geriye atıyor...
farketmezki miladitohicri isimli bir metod ile miladi takvim hicri takvime çevrilir. dini bayram günleri kontrol edilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
TURGUT
Üye
Mesajlar: 54
Kayıt: 27 May 2005 03:19
Konum: ANKARA/ETİMESGUT

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen TURGUT »

Kod: Tümünü seç

IncDay(t1); yerine t1:=t1+1;
Yukarıdaki değişiklikle sorunun bir kısmını sizinde yardımlarınızla hallettik. Şimdi sıra dini bayramları hesaplatmakta
mkysoft » 13 Nis 2010 02:13
Bakanlar kurulu karar alarak calisma gununu tatil edebiliyor. Sizde biliyorsunuz ki bazen bayramlara gun ekleniyor. Bu nedenle kesin bir kurali yok. Veri tabaninda tutarak kullanicilarin yeni tatil ekleyebilmesini saglayabilirsiniz.
önerisi ile dini bayramları veritabanından almayı düşünüyorum daha pratik bir fikir gelene kadar.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen White Rose »

Benim http://www.yusufakgul.com/Download.asp sayfasında asistan programı var ben orda yıl bazında bu işi yaptırıyordum.
Resim
---
Resim
Yukarda dediğim gibi dll dosyasını kullanarak dini günleri bulabilirsiniz,
sonra döngü içinde tek tek tarihleri kontrol ettirmeniz lazım.
Tatil günlerini veritabanı yada dosyadan alabilirsiniz.
Önceden bunların(Dini ve resmi tatil günlerinin) tanımlanması lazım
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: iki tarih arasındaki çalışma gün sayısı

Mesaj gönderen aslangeri »

s.a.
normalde miladi takvime göre bir günün hicri takvimdeki hangi güne denk geldiğini nasıl buluyorsunuz?
aynısını uygulayın.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla