Tarih hesabı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Tarih hesabı

Mesaj gönderen dost »

Merhaba,

Kod: Tümünü seç

tarih1------31.10.2004

tarih2------10.11.2002

sonuc G/A/Y/21.11.0001
iki tarih arasını yukarıdaki gibi çıkartarak
GÜN/AY/YIL olarak nasıl alabilirim.

Teşekkürler.
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

S.A.
DateUtils unitinin barındırdığı fonksiyonları incelersen bu işlemi nasıl rahatça yapabileceğini bulabilirsin. Komutlar aklımda değil yazmak isterdim ama bence senin bi bakman ve incelemen daha faydalı olur. Ancak yanlış bilmiyorsam bu unit D7 ile geliyor sadece. Eğer alt sürümler kullanıyorsanız klasik EnCode, DeCode filan vardı onlarla yapılabilir.

E tabi bide eminim böyle bir soru daha önce sorulmuş ve cevaplanmıştır. Önce :ara

Saygılar, sevgiler...

Taner DOĞAN
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

ilk önce iki tarihi birbirinden çıkart sonra DecodeDate(Tarih, Yil, Ay, Gun); fonksiyonu ile tarih den istediğin verilere ulaş Değişkenleri Yil, Ay, Gun'u word olarak tarih i de TDateTime olarak tanımla. Sitede bu konuyla ilgili geniş bilgi var. yazdığım linki incele http://www.delphiturkiye.com/index.php? ... tetime.htm


Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
NeverFear
Üye
Mesajlar: 69
Kayıt: 20 Tem 2004 09:41
Konum: İzmir

İki Tarih Arasındaki Farkı Hesaplama

Mesaj gönderen NeverFear »

//Delphi 2.0 ile yazılmıştır. Kullandığın Delphi sürümüne kendin adapte etmelisin

Kod: Tümünü seç


var
  frm_TarhHesp: Tfrm_TarhHesp;
  I:Integer;
  Goster:Boolean;

implementation
uses TrhHsp;

{$R *.DFM}

procedure Tfrm_TarhHesp.btn_TarihHesapClick(Sender: TObject);
var
    TARIH,BUGUN,SONUC:TDateTime;
    GUN1,AY1,YIL1,GUN2,AY2,YIL2:word;
    GUN,AY,YIL:integer;

begin
    BUGUN:=StrToDate(mskEdit_BaslaTarih.Text);
    TARIH:=StrToDate(mskEdit_BitisTarih.Text);
    DecodeDate(BUGUN, YIL1, AY1, GUN1);
    DecodeDate(TARIH, YIL2, AY2, GUN2);
    {showmessage(inttostr(YIL1)+'-'+inttostr(YIL2)+'-'+inttostr(AY1)+'-'+inttostr(AY2)+'-'+inttostr(GUN1)+'-'+inttostr(GUN2)+'-');}
    YIL:=YIL1 - YIL2;
    AY:=AY1 - AY2;
    if AY<0 then
    begin
    	AY:=AY+12;
         YIL:=YIL-1;
    end;
    GUN:=GUN1 - GUN2;
    if GUN<0 then
    begin
    	GUN:=GUN+30;
         AY:=AY-1;
    end;
    if AY<0 then
    begin
    	AY:=AY+12;
         YIL:=YIL-1;
    end;
    Memo1.Text:=IntToStr(YIL);
    Memo2.Text:=IntToStr(AY);
    Memo3.Text:=IntToStr(GUN);
    btn_TarihHesap.Enabled:=False;
end;

procedure Tfrm_TarhHesp.FormShow(Sender: TObject);
begin
    for I := 0 to ComponentCount -1 do
    begin
         if (Components[I] is TMaskEdit) then TMaskEdit(Components[I]).Text:='';
         if (Components[I] is TMemo) then TMemo(Components[I]).Text:='';
         if (Components[I] is TEdit) then TEdit(Components[I]).Text:='';
    end;
    btn_TarihHesap.Enabled:=False;
end;

procedure Tfrm_TarhHesp.mskEdit_BaslaTarihChange(Sender: TObject);
begin
     if (Screen.ActiveForm.ActiveControl is TMaskEdit) then
          if (Screen.ActiveForm.ActiveControl as TMaskEdit).EditText='' then
        		(Screen.ActiveForm.ActiveControl as TMaskEdit).EditText:='  /  /    ';
end;

procedure Tfrm_TarhHesp.mskEdit_BitisTarihExit(Sender: TObject);
begin
    btn_TarihHesap.Enabled:=True;
    btn_TarihHesap.SetFocus;
end;

procedure Tfrm_TarhHesp.btn_CikisClick(Sender: TObject);
begin
	close;
end;

procedure Tfrm_TarhHesp.mskEdit_BaslaTarihKeyPress(Sender: TObject;
  var Key: Char);
begin
	if Key=#13 then mskEdit_BaslaTarihExit(mskEdit_BaslaTarih);
end;

procedure Tfrm_TarhHesp.mskEdit_BaslaTarihExit(Sender: TObject);
begin
	mskEdit_BitisTarih.SetFocus;
end;

procedure Tfrm_TarhHesp.mskEdit_BitisTarihKeyPress(Sender: TObject;
  var Key: Char);
begin
	if Key=chr(VK_RETURN) then
    	perform(WM_NEXTDLGCTL,0,0)
end;

//Eğer istersen dosyaların aslını gönderebilirim. Bu konuda daha önce foruma kod göndermiştim. Haziran-Eylül 2004 tarih aralığına bakabilirsin.

kaheri579@hotmail.com
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhabalar...

- Bu eski bir başlık ama daha yeni bir başlıkta tekrar gündeme gelen aynı konu aracılığıyla geç de olsa tekrar görmüş olduk...

- Kodda geçen; bir aydaki gün sayısının 30 gün olarak sabit kullanımının hatalı sonuç doğuracağına yönelik değerlendirmemi sunduğum başlığın linki aşağıdadır...

viewtopic.php?t=6598
@mrmcop yazdı:- Hepimiz biliyoruz ki bir yıl içerisinde, ay'daki gün sayısı 4 farklı sayıdır. 28, 29, 30, 31... Bu durumun önemi, 30.01.2004 ile 02.02.2004 gibi ardışık aylarda ön plana gelir...

- Temrin : Kendiniz deneyin isterseniz... aşağıdaki işlemleri kağıt üzerinde nasıl yapardınız ?

- Yani
30.03.2004 -> 01.04.2004 arasında 2 gün'e karşılık 1 sonucu,
28.02.2004 -> 01.03.2004 arasında 2 gün'e karşılık 3 sonucu,
28.02.2005 -> 01.03.2005 arasında 1 gün'e karşılık 3 sonucu
vermesiyle hatalı işlem gerçekleştirmektedir...

- Tasarlayacağınız fonksiyonda bunlara dikkat ediniz... Vakit bulduğumda size kendi fonksiyonumu sunarım...
- Bu iki başlığın beraber değerlendirilmesi adına bu notu düştüm...
Resim
Resim ....Resim
Cevapla