Çalışma Saatini Bulmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
fearless
Üye
Mesajlar: 15
Kayıt: 26 Kas 2005 10:15

Çalışma Saatini Bulmak

Mesaj gönderen fearless »

Merhabalar,

Üzerinde çalıştığım projeden kısaca bahsedecek olursam, gun icerisinde cesitli islerde calisan personelin hangi islere ne kadar zaman ayirdigini hesaplayan kucuk bir yazilim.
personel ise basladiginda bi faaliyet seciyor, baska ise gectiginde faaliyeti kapatiyor ve arka planda baslangic bitis sureleri saate cevrilip data olarak tutuluyor. onceleri sorun olmuyordu ama bir faaliyet bir gunu gecerse program mantiksiz sonuclar veriyor
diyelim ki personel 16:00 da faaliyet acti ve ertesi gün 09:30 da faaliyeti bitirdi program otomatikman 17 saat calisti gosteriyor (aslinda 3:00 saat calisti) yani mesai saatlerini dikkate almiyor.
simdi sorum su nasil bir mantik kurmaliyim ki sabah 09:00 ile aksam 18:30 arasindaki calisma saatini bulmaliyim.

ilk akla gelen mesai bitiminde personelin faaliyeti kapatip sabah mesai basladiginda yeniden acmasi gibi geliyor ama daha kolay ve kisiye bagimli olmayan bir yol aramaktayim.

not : fazla mesai olayi gozardı edilmistir :)

fikirlerinizi bekliyorum, simdiden tesekkurler.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

- Eğer çalışma başlangıç ve bitişi aynı gün içerisinde, mesai saati içinde bitmişse: Bitiş - Başlangıç = Toplam çalışma süresini verir.

- Farklı günlerde gerçekleşmişse: (Mesai Bitişi - Başlangıç) + (Bitiş - Mesai Başlangıcı) = Toplam çalışma süresidir.

Mantığıyla:

Mesai saatleri 09:00-18:30 ise

11.10.2006 tarihinde 14:30'da işe başlamış ve 16:00'da bitirmiş ise:
16:00 - 14:30 = 1,5 saat

11.10.2006 tarihinde 15:00'da başlamış ve 12.10.2006 11:00'da bitirmişse:
(18:30 - 15:00) + (11:00 - 09:00) = 2:30 + 2:00 = 4,5 saat.


* 11.10.2006'da başlamış da 15.10.2006'da bitmişse bir de aradaki gün sayısı ile mesai saatini çarpıp sonuca eklemen gerekecek.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Hesaplama

Mesaj gönderen sabanakman »

Hesaplama için saati tarihle birlikte kullan. (TDateTime)

Kod: Tümünü seç

Baslangic=now;//<-başlama saati

Kod: Tümünü seç

Bitis=now;//bitiş saati
Saat:=Round((Bitis-Baslangic)*24);{Bitis-Baslangic gün değerini verir bunu saate çevirmek için 24 le çarpmak gerekir.}
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

GUNLUK_MESAI_SAATLERI adında (veya adı her neyse) bir tablo yapıp oraya günlük mesai başlangıç ve bitiş saatlerini her iş günü için önceden gir. Zira tam gün veya yarım gün tatillerde sorun çıkabilir. Bilahare bu tablodaki bilgilere göre diğer tablolara bilgileri yazabilirsin.

İyi çalışmalar.
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: Çalışma Saatini Bulmak

Mesaj gönderen mustafasoy »

merhaba benimde buna benzer bir mantığa ihtiyacım var
amacım çalışma günlerini ve çalışma saatlerini dikkate alarak işin hangi güne yetişeceğini hesaplamak
şöyle ki
bir model ağacım var ve 4 işlem hattından oluşuyor
mesai saati başlangıcı : 08:00:00 mesai saati bitişi : 19:00:00 olarak düşünebiliriz
üretilecek miktar 50 adet
1.proseste : 20 dakika
2.proseste : 15 dk
3.proseste : 25 dk
4.proseste : 17 dk işlem görüyor
bu durumda (20+15+25+17)*50 adet dersek toplamda (3850 dakika) ne kadar zaman harcayacağını buluyoruz
mesai 08:00:00 de başladığına göre (birinci proses için 20*50=1000 dakika ) bu süreyi üzerine ilave edildiğinde gece yarısı bir saate denk geliyor
burada koymak istediğim kontrol
eğer mesai saati dışında ise günü +1 arttır ve yeni mesai saatinden başla
yazarken çözüme ulaştı sanki :)
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Cevapla