|
||
| Delphi’ de tarih ve zaman işlemlerinizi kolaylık ile yapabilmeniz için bir çok fonksiyon tanımlanmıştır. Aşağıda bu fonksiyonlara ait örnekler detaylıca incelemeye alınmıştır. Parametre olarak girilen iki değerin tarih ve zamanla beraber eşit olup olmadığını kontrol etmek için kullanılan bir fonksiyondur. Eşitlik durumunda geriye yine sıfır dönecektir. Procedure TForm1.Button1Click(Sender; Object); var Tarih1, Tarih2 : TDateTime; begin Tarih1 := StrToDateTime(Edit1.Text); Tarih2 := StrToDateTime(Edit2.Text); If CompareDate(Tarih1, Tarih2)=0 Then Caption := ‘Girilen iki tarih ve saat eşit’ else Caption:= ‘Tarihler eşit değil’; end; CompareTime(Zaman1 , Zaman2); Parametre olarak girilen iki değişkenin aynı zamana ait olup olmadıklarını hesaplayabilen bir fonksiyondur. Eşitlik durumunda yine 0 döndürecektir. Procedure TForm1.Button1Click(Sender; Object); var Tarih1, Tarih2 : TTime; begin Tarih1 := StrToTime(Edit1.Text); Tarih2 := StrToTime(Edit2.Text); If CompareDate(Zaman1 , Zaman2)=0 Then Caption := ‘Girilen iki zaman eşit’ else Caption:= ‘Zamanlar eşit değil’; end; CurrentYear: Parametre kullanmayan bu fonksiyon ile aktif tarihin yılını kolayca öğrenebilirsiniz. Fonksiyondan geriye dönen değer tam sayı tipli olacağı için IntToStr tip dönüşüm fonksiyonunu kullanarak yazdırabilirsiniz. Procedure TForm1.Button1Click(Sender; Object); begin Caption:= IntToStr(CurrentYear); end; Date: Aktif tarihe gün ekleme işlemlerini yine bu fonksiyon ile yapmanız mümkün olabilmektedir. Aşağıda bu husus örneklendirilmiştir. Örneğin yapılış tarihinin 03/11/2005 olduğunu da belirtelim. Procedure TForm1.Button1Click(Sender; Object); Var Tarih : Tdate; begin Tarih := Date+10; // Aktif tarihe 10 gün ekle Caption:= DateToStr(Tarih); // Pc tarihinin 10 gün ilerisi end; Aynı şekilde önceki günlere dönmek için de ( – ) kullanabilirsiniz. DateOf(TarihZaman); Parametre olarak girilen tarih zaman değişkeninin, zaman kısmını atarak sadece tarih değerinin elde edilmesini sağlar. Procedure TForm1.Button1Click(Sender; Object); var TarihZaman : TDateTime; begin TarihZaman := Now; // Tarih ve zamanı beraber tutan değişken Edit2.Text := DateTimeToStr(DateOf(TarihZaman)); end; Fonksiyonun daha iyi anlaşılması açısından aşağıdaki örneği inceleyip aradaki farka dikkat ediniz. Procedure TForm1.Button1Click(Sender; Object); var TarihZaman : TDateTime; begin TarihZaman := Now; // Tarih ve zamanı beraber tutan değişken Edit1.Text := DateTimeToStr(TarihZaman); // Mesela 11.07.2005 14:00:00 yazar Edit2.Text := DateTimeToStr(DateOf(TarihZaman)); // Mesela 11.07.2005 yazar end; DateTimeToStr(Tarih1 , Tarih2); Parametreyle girilen tarih değişkenini string tipe dönüştürmek için kullanılan bir fonksiyondur. Eğer DateTime tipli bir değişken değeri aktarılırsa hata vermemekle beraber, sadece tarih kısmıyla ilgili tip dönüşümünü gerçekleştirecektir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Sonuc : AnsiString; begin Tarih := Now; Sonuc := DateToStr(Tarih); // Aktif tarih yaz Caption:= Sonuc; end; DayOfWeek(Tarih); Parametreyle girilen tarih değişkenin değerinin haftanın hangi gününe ait olduğunu hesaplayabilen bir fonksiyondur. Geriye döndürdüğü değer 1 ile 7 arasında ki sayısal ifadelerdir. 1 olması Pazar 7olması cumartesi gününe karşılık gelmektedir. Basit bir dallandırma yaparak sonuca ulaşabilirsiniz. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDate; Deger : Integer; begin Tarih := Date; // Bugünkü tarih Deger := DayOfWeek(Tarih); // Aktar If Deger=1 Then Caption := ‘Pazartesi’ else If Deger=2 Then Caption := ‘Salı’ else If Deger=3 Then Caption := ‘Çarşamba’ else If Deger=4 Then Caption := ‘Perşembe’ else If Deger=5 Then Caption := ‘Cuma’ else If Deger=6 Then Caption := ‘Cumartesi’ else If Deger=7 Then Caption := ‘Pazar’; end; DayOf(Tarih_Zaman); Parametre ile girilen Tarih_Zaman değişkeninde ayın kaçıncı günü olduğunu hesaplayan bir fonksiyondur. Tam sayı tipinde bir değer döndürdüğü için yazdırmak isterseniz IntToStr fonksiyonunu kullanmalısınız. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Deger : Integer; begin Tarih := Date; // Bugünkü tarih Deger := DayOf(Tarih); // Kaçıncı gün Caption := IntToStr(Deger); // Eğer ayın 10 u ise 10 yazar end; DayOfTheMonth(Tarih_Zaman); Parametre ile girilen Tarih_Zaman değişkeninde ayın kaçıncı günü olduğunu hesaplayan bir fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Deger : Integer; begin Tarih := Date; // Bugünkü tarih Deger := DayOfTheMonth(Tarih); // Kaçıncı gün Caption := IntToStr(Deger); // Eğer ayın 10 u ise 10 yazar end; Fonksiyondan geriye dönen değer tam sayı tipli bir değişkene aktarılabilir. Dolayısı ile form üzerindeki her hangi bir kontrolde yazdırabilmesi için IntToStr fonksiyonu ile tip dönüştürme işlemi uygulamanız gerekmektedir. Yukarıdaki örneği dikkatlice inceleyiniz. DayOfTheWeek(Tarih_Zaman); Parametre ile girilen Tarih_Zaman değişkenine ait değerin haftanın kaçıncı gününe karşılık geldiğini hesaplayan bir fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Deger : Integer; begin Tarih := Date; // Bugünkü tarih Deger := DayOfTheWeek(Tarih); // Kaçıncı gün Caption := IntToStr(Deger); // Eğer ayın 10 u ise 10 yazar end; DayOfTheYear(Tarih_Zaman); Parametre ile girilen Tarih_Zaman değişkenine ait değerin yılın kaçıncı gününe karşılık geldiğini hesaplayan bir fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Deger : Integer; begin Tarih := Date; // Bugünkü tarih Deger := DayOfTheYear(Tarih); // Kaçıncı gün Caption := IntToStr(Deger); // Eğer ayın 10 u ise 10 yazar end; DaysBetween(Tarih1 , Tarih2); Parametre ile girilen iki tarih değişkeni arasındaki gün farkını hesaplayan fonksiyondur. Fonksiyonun geriye döndürdüğü değer bir tam sayı olduğu için yazdırmak için IntToStr fonksiyonundan faydalanmalısınız. Aşağıda bu fonksiyon örneklendirilmiştir. Procedure TForm1.Button1Click(Sender; Object); var Tarih1, Tarih2 : TDateTime; Sayi : Integer; begin Tarih1 := StrToDateTime(Edit1.Text); // İlk tarih değer Tarih2 := StrToDateTime(Edit2.Text); // İkinci tarih değer Sayi := DaysBetween(Tarih1, Tarih2); // Aralarında kaç gün var Caption := IntToStr(Sayi); end; Bu fonksiyonda değişkenlerin yerleri önem arz etmektedir. Hangisinin büyük olduğuda önemli değildir, sonuçta pozitif değeri döndürmektedir. DaysIncMonth(Tarih_Zaman); Parametre ile girilen Tarih_Zaman değişken değerinin ait olduğu ayın kaç gün çektiğini hesaplayabilen bir fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Sayi : Integer; begin Tarih := Date; // Aktif tarih Sayi := DaysInMonth(Tarih); // Bu ay kaç gün çekiyor Caption := IntToStr(Sayi); // 7. Ay olduğunu farzedelim, 31 gün vardır. end; Fonksiyondan geriye dönen değer, tam sayı tipli bir değişkene aktarılabilir. Şayet bu değeri yazdırmak isterseniz IntToStr fonksiyonunu kullanmalısınız. DaysIncAMonth(Tam_Sayi , Tam_Sayi2); Birinci parametre ile girilen yıla ait, ikinci parametreyle girilen ayın kaç gün çektiğini hesaplayabilen bir fonksiyondur. Fonksiyondan geriye dönen değer bir tam sayı olduğu için IntToStr fonksiyonu kullanılarak yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Sayi : Integer; begin Sayi := DaysInAMonth(2000,3); // 2000 yılının 3. ayı kaç gün Caption := IntToStr(Sayi); // 31 yazar end; DaysIncAYear(Tam_Sayi); Parametre ile bilertilen yılın kaç gün çektiğini hesaplayabilen bir fonksiyondur. Tam sayı tipli bir fonksiyon döndürdüğü için IntToStr fonksiyonu ile kolayca yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Sayi, Yil : Integer; Begin Yil := 2005; Sayi := DaysInAYear(2005); // 2005 yılı kaç gün Caption := IntToStr(Sayi); // 365 yazar end; DaysInYear(Tam_Sayi); Parametre ile belirtilen tarih içerikli değişken değerinin ait olduğu yılın kaç gün çektiğini hesaplayan fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Sayi : Integer; Begin Tarih := Date; Sayi := DaysInYear(Tarih); // Tarih kaç gün Caption := IntToStr(Sayi); // 365 yazar end; DaySpan(Tarih1 , Tarih2); Parametre ile girilen iki tarihsel değişken arasındaki gün farkını hesaplayan bir fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih1, Tarih2 : TDateTime; Sonuc : Double; Begin Tarih1 := StrToDate(’01.04.2003’); Tarih2 := StrToDate(’02.03.2003’); Sonuc := DaySpan(Tarih1, Tarih2); // Kaç gün fark var Caption := FloatToStr(Sonuc); end; DecodeDate(Tarih, Yil, Ay, Gun); İlk parametre ile girilen tarihin yıl, ay, gün değerlerini hesaplayarak ikinci, üçüncü ve dördüncü değişkenlere aktarılır. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay, Gun : Word; //Word olmak zorunda Begin Tarih := StrToDate(’10.07.2003’); DecodeDate(Tarih, Yil, Ay, Gun); // Tarihi parçalara ayır Caption := ‘Yıl : ’+InttoStr(Yil)+’ Ay : ’+IntToStr(Ay)+’ Gün : ‘+IntToStr(Gun); end; DecodeDateDay(Tarih, Yil, Gun); Birinci parametre ile belirtilen tarih değişkeninin yılını ikinci parametreye, yılın kaçıncı günü olduğunu da üçüncü parametreye aktaran bir prosedürdür. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay : Word; //Word olmak zorunda Begin Tarih := StrToDate(’10.07.2003’); DecodeDateDay(Tarih, Yil, Ay); Caption := ‘Yıl : ’+InttoStr(Yil)+’ Gün : ‘+IntToStr(Ay); end; DecodeDateMonthWeek(Tarih, Yil, Ay, Kaçıncı_Hafta, Haftanın_Kaçıncı_Günü); Birinci parametre ile verilen tarih değişkenine ait yıl değerini, ikinci parametreye, ay değerini değerini üçüncü parametreye, ayın kaçıncı haftası olduğunu dördüncü parametreye ve haftanın kaçıncı günü olduğunu beşinci parametreye aktaran bir prosedürdür. Fonksiyon tanımlarına dikkat ederseniz bazılarının function olarak değil de prosedür olarak tanıdıklarını göreceksiniz Biz hepsini fonksiyon başlığı altında veriyoruz. Gerçekte de öyle olması gerekir. Çünkü bu prosedürlerin bir çoğu geriye birden fazla değer döndürdükleri için (daha önce bu konular detaylı olarak anlatılmıştır) fonksiyon olarak değil de prosedür olarak tanımlanmaları gerekmektedir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay, Hafta, Deger : Word; //Word olmak zorunda Begin Tarih := StrToDate(’10.07.2003’); DecodeDateMonthWeek(Tarih, Yil, Ay, Hafta, Değer); Caption := ‘Yıl : ’+InttoStr(Yil)+’ Ay : ‘+IntToStr(Ay)+’ Ayın Kaçıncı Haftası : ’+IntToStr(Hafta)+’ Haftanın Kaçıncı Günü : ’+IntToStr(Deger); end; DecodeTime(Zaman, Saat, Dakika, Saniye, Salise); Birinci parametre ile girilen zaman değişkeninin, saat değerini ikinci parametreye, dakika değerini üçüncü parametreye, saniye değerini dördüncü parametreye ve salise değeri de beşinci parametreye aktaranbir prosedürdür. Procedure TForm1.Button1Click(Sender; Object); var Zaman : TDateTime; Saat, Dakika, Saniye, Salise : Word; //Word olmak zorunda Begin Zaman := Now; DecodeTime(Zaman, Saat, Dakika, Saniye, Salise); Caption := ‘Saat : ’+InttoStr(Saat)+’ Dakika : ‘+IntToStr(Dakika)+’ Saniye : ’+IntToStr(Saniye)+’ Salise : ’+IntToStr(Salise); end; EncodeDate(Yil, Ay, Gun); Üç parametre ile belirtilen tam sayıları birleştirerek tarih değeri oluşturabilen bir fonksiyondur. Fonksiyondan geriye dönen değer tarihsel içerikli olduğu için yazdırılmak istenirse DateTimeToStr tip dönüştürme fonksiyonundan faydalanmalısınız. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay, Gun : Word; //Word olmak zorunda Begin Tarih := 2003; Ay := 7; Gün := 10; Tarih := EncodeDate(Yil, Ay, Gun); Caption := DateTimeToStr(Tarih); // 10.07.2003 yazar end; EncodeDateDay(Yıl, Değer); Birinci parametre ile belirtilen (tam sayı) yıla, ikinci parametreyle belirtilen kadar (tam sayı) gün ekler. Sonuç tarihsel bir değer içerdiği için DateTimeToStr tip dönüştürme fonksiyonu kullanılarak yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Deger : Word; //Word olmak zorunda Begin Tarih := EncodeDateDay(2003, 35); // 35 Gün ekle Caption := DateTimeToStr(Tarih); // 04.02.2003 end; EncodeDateMonthWeek(Yıl, Ay, Hafta, Gün); Belirtilen parametreleri birleştirerek yeni bir tarih değeri elde eder. Mesela 2003 yılının 3. ayının 2. haftasının 4. günü vs. fonksiyondan geriye dönene değer tarihsel veri içereceği için yazdırmak ancak DateTimeToStr tip dönüştürme fonksiyonu sayesinde olabilcektir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay, Deger : Integer; Begin Tarih := EcodeDateMonthWeek(2003, 4, 2, 2); Caption := DateTimeToStr(Tarih); // 08.04.2003 yazar end; EncodeDateWeek(Yıl , Hafta); Parametreyle belirtilen yıla, yine ikinci parametre kadar hafta ekler. Geriye dönen değer tarih içerikli olacaktır. Yazdırmak için DateTimeToStr fonksiyonundan faydalanmalısınız. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EncodeDateWeek(2003, 3); // 3. Haftanın ilk günü Caption := DateTimeToStr(Tarih); //13.01.2003 yazar end; EncodeDateOfWeekInMonth(Yıl , Ay, Hafta, Gün); Parametre ile belirtilen ay, hafta, gün değerlerini yıla ekleyerek yeni bir tarih hesaplar. Fonksiyondan geriye dönen değer tarih içerikli olacağı için DateTimeToStr tip dönüştürme işlemi sayesinde yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EncodeDateOfWeekInMonth(2003, 2, 2, 3); // 2. Ayın 2. haftasının 3. günü Caption := DateTimeToStr(Tarih); //12.02.2003 yazar end; EncodeTime(Zaman, Saat, Dakika, Saniye, Salise); Parametre ile belirtilen değeri birleştirerek yeni bir zaman değeri türetir. Fonksiyondan geriye zaman içerikli bir değer döneceği için TimeToStr tip dönüştürme fonksiyonu kullanılarak yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Zaman : TDateTime; begin Zaman := EncodeTime(16, 25, 30, 40); Caption := TimeToStr(Zaman); // 16:25:30 yazar end; EndOfADay(Yıl, Deger); Parametre ile belirtilen yıl değişkenine, yine ikinci parametreyle belirtilen değere kadar gün ekler. Fonksiyondan dönen değer tarihsel içerikli olduğu için DateToStr tip dönüştürme fonksiyonu kullanılarak yazdırılabilir. Geriye dönen değeri DateTimeToStr tip dönüştürme fonksiyonu ile yazdırmaya kalkarsanız, zamanla beraber yazılacaklarını belirtmek isterim. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EndOfADay(2003, 9); // 9 Gün ekle Caption := DateToStr(Tarih); // 09.01.2003 yazar end; EndOfAMonth(Yıl, Ay); Birinci parametre ile belirtilen yıl değişkenine, ikinci parametre ile belirlenen değer kadar ayı ekler yeni bir tarih değeri bulur. Fonksiyondan geriye dönen değer tarihsel içerikli olduğu için DateTimeToStr tip dönüştürme fonksiyonu ile yazdırılmalıdır. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EndOfAMonth(2003, 7); // 7 Ay ekle Caption := DateToStr(Tarih); // 31.07.2003 yazar end; EndOfAWeek(Yıl, Hafta); Birinci parametre ile belirtilen yıla ikinci parametre ile belirtilen haftanın en son gününü hesaplayan fonksiyondur. Fonksiyondan geriye dönen değer tarihsel içerikli olduğu için yazdırmak için DateToStr fonksiyonundan faydalanılmıştır. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EndOfAWeek(2003, 3); // 3. Haftanın en son günü Caption := DateToStr(Tarih); // 19.01.2003 yazar end; EndOfAYear(Yıl); Parametre ile verilen yıla ait en son günün tarihini hesaplayan fonksiyondur. Fonksiyondan geriye dönen değer tarihsel içerikli olduğu için DateToStr tip dönüştürme fonksiyonu sayesinde yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; begin Tarih := EndOfAYear(2003); // 3. Yılının en son günü Caption := DateToStr(Tarih); // 31.12.2003 yazar end; FormatDateTime(Stil , Tarih); İkinci parametre ile belirtilen tarihi, birinci parametre ile belirtilen formatlı hale dönüştürür. Fonksiyondan dönen değer String tipte olduğu için direk yazdırılabilir. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDate; Sonuc : AnsiString; begin Tarih := Date; Sonuc := FormatDateTime(‘dddd, mmmm d,yyyy’, Tarih); Caption := Sonuc; // Perşembe Temmuz 10 2003 yazar end; Tarihsel içerikli değişkenleri formatlamak için kullanabileceğiniz bayağı bir seçeneğiniz var. Aşağıda bu seçeneklerden bazılarını sizlere vermeye çalışacağım. ‘dddd, mmmm d, yyyy’ Perşembe Temmuz 10 2003 gibi ‘mmmm d, yyyy’ Temmuz 10 2003 gibi ‘mmmm yyyy’ Temmuz 2003 gibi ‘yyyy’ 2003 gibi ‘dddd, d, mmmm yyyy’ Perşembe 10 Temmuz 2003 gibi ‘d, mmmm yyyy, dddd’ 10 Temmuz 2003 Gibi IncAMonth(Yıl, Ay, Gün); Üç parametreyi birleştirerek oluşturacağı tarih değerinden, bir ay sonrasının tarihini hesaplayan fonksiyondur. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDateTime; Yil, Ay, Gün : Word; begin Yil := 2003; Ay := 7; Gün := 10; IncAMonth(Yil, Ay, Gun); // Ay’ ı artır. Caption := IntToStr(Yil)+’ ’+IntToStr(Ay)+’ ’+IntToStr(Gun); end; IncDay(Tarih); Parametre ile girilen tarih değerini, gün olarak bir artırmak için kullanılan fonksiyondur. Fonksiyondan geriye dönen değer tarihsel içerikli olacağı için yazdırabilmeniz ancak DateToStr fonksiyonu sayesinde olacaktır. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDate; begin Tarih := Date; Tarih := IncDay(Tarih); // Tarihi bir gün artır Caption := DateToStr(Tarih); end; IncMonth(Tarih); Parametre olarak girilen tarih içerikli değişken içeriğindeki ayı bir artırarak yeni bir tarih değeri hesaplar. Fonksiyondan geriye dönen değer tarih içerikli olacağı için yazdırmanız ancak DateToStr fonksiyonundan faydalanmalısınız. Procedure TForm1.Button1Click(Sender; Object); var Tarih : TDate; begin Tarih := Date; Tarih := IncMonth(Tarih); // Tarihi bir ay artır Caption := DateToStr(Tarih); end; IncWeek(Tarih); |
||