TARİH VE SAAT (DateTime) FONKSİYONLARI

Delphi her türlü tarih fonksiyonu içeren DateUtils unitini içerir. Aşağıda bu fonksiyonlardan en çok ihtiyacınız olacağınızı düşündüklerimi açıkladım. Her fonksiyondan sonra, bir örnek ve örneğin döndüreceği değeri yazdım. Böylelikle konu daha açık anlaşılacaktır.

Günün tarihini "03/09/2002" Salı, saatini ise "11:05:03" olarak kabul ettim. Bu fonksiyonları kullanırken uses kısmına DateUtils'i eklemeyi unutmayın.

- CompareDate : verilen iki tarihi karşılaştırır. 1. tarih büyükse 1, küçükse -1, eğer iki tarihte aynı ise 0 değerini döndürür.

            CompareDate(Date -2 , Date) = -1

    NOT : Tarihler üzerinde direk toplama ve çıkarma işlemi yapabilirsiniz. "Date -2" iki gün öncesinin tarihini verecektir.                        

- CompareDateTime : verilen iki tarih ve saat içeren datetime değerini karşılaştırır. 1. değer büyükse 1, küçükse -1, her iki tarihsaat değeri aynı ise 0 döndürür. Burada değerin aynı olması demek yıl'dan başlayark saliseye kadar tüm değerlerin aynı olması demektir.

- CompareTime : verilen iki saat değerini karşılaştırır. 1. değer büyükse 1, küçükse -1, iki değerde aynı ise 0 döndürür.

- CurrentYear : Geçerli yıl bilgisini 4 karakter olarak döndürür. 2002 gibi. 

            CurrentYear = 2002   

- Date : Geçerli tarihi döndürür.

            Date = 03/09/2002     

- DateOf : Bir datetime değerini alarak bunun sadece tarih kısmını döndürür. Aslında burada saat bilgisi silinmez, "00:00:00" yani geceyarısını gösterecek şekilde değiştirilir. Yani tarih ve saat ayrılmaz ikilidir. Sürekli beraberdirler.

            DateOf ( Now ) = 03/09/2002

- DateTimeToStr : Verilen bir DateTime değerini string'e çevirir.

            DateTimeToStr ( Now ) = '03/09/2002 11:05:03'

- DateTimeToString : Verilen bir DateTime değerini istediğiniz formatta string'e çevirir.

            var
              Str : String;
           
              DateTimeToString(Str, 'd mmmm yyyy dddd, hh:nn', Now);
              ShowMessage ( Str );  = 3 Eylül 2002 Salı, 11:05

- DateToStr : verilen bir DateTime değerini string'e çevirir. Sonuçta sadece tarih verisi bulunur, saat olmaz.

            DateToStr ( Date) = '03/09/2002'

- DayOf : Verilen bir DateTime değerindeki günü döndürür. Yani sonuç 1 ile 31 arasında bir değer olabilir.

            DayOf ( Date ) = 3

- DayOfTheMonth : DayOf fonksiyonu ile tamamen aynıdır.

            DayOfTheMonth ( Date ) = 3

- DayOfTheWeek : Haftanın kaçıncı günü olduğunu döndürür. Pazartesi ise 1, Salı ise 2, ... Pazar ise 7 döndürür.

            DayOfTheWeek ( Date ) = 2

- DayOfTheYear : Yılın kaçıncı günü olduğunu döndürür.

            DayOfTheYear ( Date ) = 246

- DayOfWeek : Haftanın kaçıncı günü olduğunu döndürür. Bu fonksiyonun farkı Pazar günü ilk gün sayılır. Yani Pazar ise 1, Pazartesi 2 ... Cumartesi ise 7 döndürür.

            DayOfWeek ( Date ) = 3

- DaysBetween : verilen iki DateTime arasındaki geçen gün sayısını döndürür. Bu fonksiyonda saatte önemlidir. 24 saat geçmiş olmalıdır. Yani "02/09/2002 11:54:00" ile "03/09/2002 11:53:59" arasındaki gün sayısı 24 saat dolmadığı için 0 dır.

- DaysInAMonth : Verilen yıl ve aydaki gün sayısını döndürür.

            DaysInAMonth (2002, 5) = 31

- DaysInAYear : Verilen yılda kaç gün olduğunu döndürür.

            DaysInAYear ( 2002 ) = 365

- DaysInMonth : Verilen tarihteki ayın kaç gün olduğunu hesaplar. Yani yıl ve ay değerini verdiğiniz tarihten alır.

            DaysInMonth ( Date ) = 30

- DaysInYear : Verilen tarihteki yılda kaç gün olduğunu döndürür. Yani yıl değerini verdiğiniz tarihten alır.

            DaysInYear ( Date ) = 365

- DaySpan : Verilen iki DateTime değeri arasındaki gün farkını bulur. DaysBetween fonksiyonundan farkı, küsratlı değerler döndürür. Yani iki tarih arasında 1 gün 23 saat ve 58 dakika fark varsa DaySpan : "1,998611" değerini döndürür, DaysBetween gün tamamlanmadığı için 1 değerini döndürür.

- DecodeDate : Verilen DateTime değerini yıl, ay ve gün değerlerini döndürür.

            var
              Yil, Ay, Gun : word;

            DecodeDate ( Date, Yil, Ay, Gun);

- DecodeDateDay : Verilen DateTime değerinin yıl ve verilen tarihinde yılın kaçıncı günü olduğunu döndürür. 2002 ve 246. gün gibi.

- DecodeDateTime : Verilen DateTime değerinin yıl, ay, gün, saat, dakika, saniye, salise değerlerini döndürür.

            var
              yil, ay, gun, saat, dakika, saniye, salise : Word;

            DecodeDateTime ( Now, yil, ay, gun, saat, dakika, saniye, salise);

- DecodeDateWeek : Verilen DateTime değerinin yılını, yılın kaçıncı haftası olduğunu ve haftanın kaçıncı günü olduğunu döndürür.

- DecodeTime : Verilen DateTime değerinin saat, dakika, saniye ve salise değerlerini döndürür.

            var
              saat, dakika, saniye, salise : Word;

            DecodeTime ( Now, saat, dakika, saniye, salise);

- EncodeDate : Verilen yıl, ay, gün değerlerini birleştirip oluşan tarih değerini döndürür.

            var
              Tarih : TDateTime;

            Tarih := EncodeDate (2002, 10, 5); = 05/10/2002

- TryEncodeDate : Verilen yıl, ay, gün değerlerini birleştirip oluşan tarih değerini döndürür. Eğer yanlış değerler verilmişse fonksiyon False değerini geri döndürür, tarih başarıyla birleştirilmişse True değerini döndürür.

            var
              Tarih : TDateTime;

            if TryEncodeDate(2002, 10, 5, Tarih) then
              ShowMessage (' tarih başarıyla birleştirildi!');

- EndOfAMonth : Verilen yıl ve ayın son günü ve son anını döndürür.

            EndOfAMonth (2002, 5) = 31/05/2002 23:59:59

- FormatDateTime : Verilen DateTime değerini istediğiniz formatta göstermek için kullanılır.

            FormatDateTime ('d mmmm yyyy', Date) = '3 Eylül 2002'

- HourOf, HourofTheDay : Verilen DateTime değerinin saatini döndürür. Yani sonuç 0 ile 23 arasındadır.

            HourOf (Now) = 11

- HoursBetween : Verilen iki DateTime değeri arasında geçen saati döndürür. Fonksiyon 60 dakika tamamlanınca değeri arttırır. Yani 12:00:00 ile 12:59:59 arasındaki fark 0 (sıfır) dır, ancak 13:00:00 olduğunda 1 döndürür.

- HourSpan : Verilen iki DateTime değeri arasında geçen saati döndürür. Yukarıdaki fonksiyondan farkı saat tam olmasa bile değeri küsuratlı olarak döndürür. Mesela 12:00:00 ile 12:59:59 arasındaki saat farkı 0,9998 saat gibi.

- IncMonth : Verilen tarihi, istenilen ay kadar artırır veya azaltır. 
      o Eğer parametre - verilirse önceki ayları döndürür. Örneğin -1 verilirse bir ay önceki tarihi döndürür.
      o Eğer parametre 1 den büyük bir değer verilirse o kadar ay sonrasını döndürür.
      o Eğer tarih arttırıldığı zaman verilen gün o ay içerinde yoksa, o ayın son günü döndürülür. Mesela 31/01/2002 tarihini bir ay artırırsanız şubat ayında 31. gün olmadığı için sonuç 28/02/2002 olacaktır.

            IncMonth ( Date ) = 03/10/2002 

- IncDay : Verilen tarihi istenilen gün kadar artırır veya azaltır. Parametre + verilirse artırır, - verilirse azaltır. 

            IncDay ( Date ) = 04/09/2002
            IncDay ( Date, 3 ) = 06/09/2002
            IncDay ( Date, -1) = 02/09/2002

- IncHour : Verilen DateTime değerinin saatinin istenilen değer kadar artırır veya azaltır. Benzer şekilde IncMinute, IncMilisecond, IncSecond fonksiyonları da vardır.

- IncWeek : Verilen tarihi istenilen hafta sayısı kadar artırır veya azaltır. Parametre + verilirse artırır, - verilirse azaltır.

            IncWeek ( Date ) = 10/09/2002

- IncYear : Verilen tarihin senesini istediğinz kadar artırır veya azaltır. Parametre + verilirse artırır, - verilirse azaltır.

            IncYear ( Date ) = 03/09/2003
            IncYear ( Date, -2) = 03/09/2000

- IsInLeapYear : Verilen tarihin artık bir senede (Şubat'ın 29 gün olduğu) olup olmadığını test eder.

            if IsInLeapYear (Date) then
              ShowMessage (' 2002 senesi artık yıl olmadığı için, bu mesajı asla göremezsiniz!');

- IsLeapYear : Verilen senenin artık sene (Şubat'ın 29 gün olduğu) olup olmadığını test eder.

            if IsLeapYear ( CurrentYear ) then
              ShowMessage (' Bu sene Şubat ayı 29 gün çekiyor');

- IsToday : Verilen tarihin bugünün tarihi olup olmadığını test eder. Aynı gün ise True döndürür.

            if IsToday ( Date ) then
              ShowMessage ( 'Date bugünün tarihini verdiği için bu mesajı görürsünüz');

- IsValidDate : Verilen yıl, ay, gün değerlerinin geçerli bir tarih olup olmadığını test eder. Örneğin ay 2 ve gün 30 ise, Şubat hiç bir zaman 30 gün olamayacağı için False döndürür.

            if IsValidDate (2002, 10, 1) then
              ShowMessage ('geçerli bir tarihtir');

- IsValidDateTime : Verilen yıl, ay, gün, saat, dakika, saniye, salise değerlerinin geçerli bir DateTime değeri olup olmadığın test eder. Geçerli ise True, değilse False döndürür.

            if not IsValidDateTime ( 2002, 13, 5, 11, 11, 11, 11 ) then
              ShowMessage (' ay hiç bir zaman 13 olamaz, 1 ile 12 arası bir değer olamlıdır!');

- IsValidTime : Verilen saat, dakika, saniye, salise değerlerinin geçerli bir saat değeri olup olmadığın test eder. Geçerli ise True, değilse False döndürür.

            if not IsValidTime (30, 11, 10, 1) then 
              ShowMessage (' saat 23'' ten büyük olamayacağı için geçersiz bir tarihtir');

- MinutesBetween : Verilen iki tarih arasındaki dakika farkını verir. Dakika tam olduğu zaman değeri artırır. Örneğin 9:00:00 ile 9:00:59 arasındaki farkı 0 (sıfır) olarak döndürür.

- MinuteSpan : Verilen iki tarih arasındaki dakika farkını verir. Dakika tam olmasa bile küsuratlı olarak değeri döndürür. Örneğin 9:00:00 ile 9:00:59 arasındaki farkı 0,998 dakika gibi döndürür.

- MonthOf : Verilen tarihin ayını döndürür. Yani sonuç 1 ile 12 arasında bir değer olmalıdır.

            MonthOf ( Date ) = 9

- MonthsBetween : Verilen iki tarih arasındaki ay farkını verir. Ayların uzunlukları eşit olmadığı için bir ay 30.4375 gün olarak belirlenmiştir. Her 30.4375 gün için değer 1 arttırılır.

- MonthSpan : Verilen iki tarih arasındaki ay farkını verir. 1 ay yine 30.4375 gün olarak belirlenmiştir. Süre tamalanmasa bile küsuratlı olarak değeri döndürür.

- Now : Geçerli tarih ve saati döndürür.

            Now = 03/09/2002 11:05:03

- NthDayOfWeek : Verilen tarihteki günün, o ay içindeki kaçıncı iş günü olduğunu döndürür. Mesela gün Salı ve ayın ikinci Salısı ise 2 döndürür.

            NthDayOfWeek ( Date ) = 1

- StartOfAMonth : Verilen yıl ve aydaki ilk günün ilk anını döndürür.

            StartOfAMonth (2002, 5) = 01/05/2002 00:00:00

- StrToDate: Verilen stringi tarih değerine çevirir.

            StrToDate ('01/01/2002') = 01/01/2002

- StrToDateTime : Verilen stringi DateTime değerine çevirir.

            StrToDateTime ('01/01/2002 05:22:00') = 01/01/2002 05:22:00

- Time : Geçerli saati döndürür.

            Time = 11:05:03

- TimeToStr : Verilen saat değerini stringe çevirir.

            TimeToStr ( Time ) = '11:05:03'

- Today : Bugünün tarihini döndürür.

            Today = 03/09/2002

- Tomorrow : Ertesi günün (yarın) tarihini döndürür.

            Tomorrow = 04/09/2002

- YearOf : Verilen tarihin yılını döndürür.

            YearOf ( Date ) = 2002

- YearsBetween : Verilen iki tarih arasındaki yıl farkını döndürür.

- Yesterday : Bir önceki günün (dün) tarihini döndürür.

            Yesterday = 02/09/2002

 

DateUtils uniti içinde bunun en az iki katı daha fonksiyon var. Ben en çok kullandıklarımı ve lazım olabileceğini düşündüklerimi burada açıkladım. Listenin tamamını görmek için, Help'ten "date/time routines" kısmına bakın.

bimeks borland component database delphi delphi.net delphi dersleri firebird help interbase makale oracle seminer software sybase veritabanı web