C# Datetime Yapısı ve Örnekleri
Yazılım meraklılarına selamlar olsun :)
Önceki makalemizde C# karar yapılarını öğrenmiştik ve aynı hızda bugün yeni bir konuya giriş yapıyoruz.Başlıktan da anlaşılacağı gibi programlama dünyasında datetime adında bir kavram vardır ve adından da tahmin edebileceğiniz gibi tarih-zaman ile ilgili işlemlerimizi gerçekleştirebileceğimiz .net framework alt yapılarından birisidir.
Datetime başlı başına bir sınıftır ve içerisinde kendine özgü metodlar ve diğer yapıları barındırır,bu yüzden bu sınıfı bazı yerlerde kullanabilmemiz için instance (örnek) oluşturur ardından bu sınıfla gelen yapıları kullanırız.C# ile Datetime kullanımı oldukça basittir ve aşağıda bazı kullanımlarını göreceğiz ama öncelikle "datetimeUygulamasi" adında yeni bir windows form projesi oluşturuyoruz.Konuyu oldukça hızlı ve kolaylıkla kavrayabileceğimiz için kodlarımızı form_load eventi içerisine yazacağız.
Formun başlığına çift tıkladıktan sonra load bloğuna öncelikle şunu yazıyoruz:
Bunun anlamı şudur; datetime sınıfının bir örneğini aldık ve "date" adındaki bir değişkene yükledik.Dikkat ettiyseniz bugüne kadar hep int,string gibi referans olmayan değişkenler kullanmıştık ve şimdi ise Datetime sınıfından türettiğimiz bir değişken yarattık.
Oluşturduğumuz bu değişkenin sonuna nokta koyarak kendine ait overload (aşırı yüklemeler,diğer metotlar) yapısını
görüyoruz:
Gördüğümüz gibi çeşitli overloadları var ve datetime sınıfını kullanarak yazılım dünyasında çok sık kullanmasakta
yeri geldiğinde çok işlevsel uygulamalar ve kodlar yazabiliyoruz.
Bu arada belki bilmiyor olabilirsiniz ancak .Net Framework mimarisinin adı başındaki nokta işareti hani bu metotları vs
yazdığımız nokta işaretinden geliyor,yani nokta kullandığımız çoğu yer .net framework yazılım mimarisinden gelmektedir. :)
Bu genel kültür bilgisinden sonra şimdi Datetime sınıfını kullanmaya geldi,genel ve sık kullanım şekillerinden bazılarını
şu şekilde görelim:
Öncelikle "suAn" adında string tipinde bir değişken atıyoruz,bunu string tipinde yazmamızın nedeni şimdi öğreneceğimiz
tarih-zaman dönüş değerleri metinsel tipte olacak ve gelen değerleri messagebox.show metoduyla ekranda göstereceğiz.
1-Datetime.ToString() Metodu:
Bu metot zamanın şu anki anını tarih-saat halinde geri döndürür ve format gün.ay.yıl saat:dakika:saniye biçimindedir.
Dönüş tipini ekranda görürsek:
şeklindedir.
2-Datetime.ToShortDateString() Metodu:
Bu metot yalnızca kısa tarih biçimini gösterir ve saat bilgisini vermez,formatı ise gün.ay.yıl şeklindedir ve ekran
görüntüsü şu şekildedir:
3-Datetime.ToShortTimeString() Metodu:
Bu metot yalnızca saat bilgisini gerir döndürür ve formatı saat:dakika şeklindedir:
4-Datetime.ToLongDateString() Metodu:
Bu metot genel günlük hayatımızdaki tarih şeklini verir ve diğer tarih bilgilerine ek olarak bulunduğumuz günün ismini de
geri döndürür,formatı ise gün.ay.yıl gün adı şeklindedir.
5-Datetime.ToLongTimeString() Metodu:
Bu metot yalnızca saat bilgisini geri döndürür ve ToShortTimeString() metoduna ek olarak saniye bilgisini de geri
döndürür,formatı ise saat:dakika:saniye şeklindedir:
6-Datetime.ToUniversalTime() Metodu:
Bu metot kısaca UTC olarak belittiğimiz evrensel zamanı geri döndürür ve dönüş değeri Greenwich sıfırıncı konumunun
değerini verir ancak bu metot tek başına kullanılamaz çünkü geri dönüş değeri yapısal olduğu için bu değerin saat mi yoksa gün mü ya da her ikisi veya diğer kombinasyonlarını mı istediğimizi belirtmeliyiz.Bunun için en kolay yol bu metodun sonuna ToString() ekleyerek 1.metottaki gibi tam zamanı isteyebiliriz,yani kullanımı ToUniversalTime().ToString() dir.
7-Datetime.Day Metodu:
Bu metot ayın kaçıncı gününde olduğumuzu sayısal biçim olan integer tipinde geri döndürür.
8-Datetime.DayOfWeek Metodu:
Bu metot haftanın hangi günündeysek onun adını verir,ancak dönüş ismi günün ingilizce karşılığıdır:
9-Datetime.DayOfYear Metodu:
Bu metot yılın kaçıncı gününde olduğumuzu int olarak geri döndürür.
10-Datetime.Hour Metodu:
Bu metot 24 saatlik dilimin kaçıncı saatinde olduğumuzu gösterir,eğer şu an saat 19:25 ise geri dönüş değer 19 olur.
11-Datetime.Millisecond Metodu:
Bu metot şu an ki saatin kaçıncı milisaniye içerisinde olduğumuzu int olarak geri döndürür,tabi bunu ancak bir bilgisayar
anlayabilirdi :)
12-Datetime.Minute Metodu:
Bu metot ise şu an ki saatin kaçıncı dakikasında olduğumuzu int olarak gerir döndürür,eğer saat şu an 19:27 ise 27
sayısını geri döndürür.
13-Datetime.Month Metodu:
Yılın kaçıncı ayında olduğumuzu int tipinde geri döndürür,eğer bu ay aylardan Temmuz ise 7 sayısını geri döndürür.
14-Datetime.Second Metodu:
Şu an ki saatin kaçıncı saniyesinde olduğumuzu int tipinde geri döndürür,eğer saat şu an 19:29:43 ise 43 sayısını geri
verecektir.
15-Datetime.Ticks Metodu:
Bu metot 1 Ocak 0001 tarihindeki 12:00:00 saatinden geçen saniyeyi temsil eder,eğer o yılda doğduysanız nice yıllara :)
16-Datetime.Year Metodu:
Bu metot hangi yılda olduğumuzu int tipinde geri döndürür ve ben bu makaleyi 2013 yılında yazdığıma göre şu an 2013
sayısını geri döndürecektir.
17-Datetime.DaysInMonth() Metodu:
Bu metot ile bu ayın kaç çektiğini yani bu aydaki gün sayısını yakalarız.
.Net Framework yazılım mimarisindeki Datetime yapıları genel itibariyle birlikte böyle kullanılmaktadır,bu şekilde farklı
metotlara bölünmesinin sebebi tam tarih biçimini elle parçalamak yerine tek seferde kolaylıkla almamıza imkan tanımakta ve biz yazılım uzmanlarının işini oldukça kolaylaştırmaktadır.
Elbette Datetime kullanımı henüz bitmedi,sıra Datetime sınıfının en çok sevdiğim metotlarına geldi yani şu an ki tarihe
dakika,saniye,gün vs gibi bilgileri ekleme çıkarma konusuna geldi ve umarım makale oldukça hoşunuza gidiyordur :)
Bu arada buraya kadar yazdığımız kodlar sırasıyla şu şekildeydi:
Şimdi hiç hız kesmeden ekleme çıkarma işlemlerine geçelim,bu kullanım şekli "Add" sözcüğüyle başlayan metotlar ile
gerçekleşir ve bu metotların overloadları int veya double tipinde sayısal değerler olarak parametre alırlar.
Genel kullanımı şöyledir:
1-Datetime.AddDays() Metodu:
Bu metot bulunduğumu haftanın gün sayısına ekleme ve çıkarma yapar,parametre olarak negatif değer verirsek bugünden belirttiğimiz gün kadar azaldır,pozitif değer verirsek bugüne o kadar gün sayısı ekler:
2-Datetime.AddHours() Metodu:
Bu metot bulunduğumuz saatin int tipine ekleme yapma çıkarmamızı sağlar.
3-Datetime.AddMilliseconds() Metodu:
Bu metot şu anki saatin milisaniye cinsine değer ekleme ya da çıkarma yapmamızı sağlar.
4-Datetime.AddMinutes() Metodu:
Bu metot şu an ki saatin dakikasına değer ekleme ya da çıkarma yapmamızı sağlar,bunu sabah telefon alarmı çalarken 5 dakika erteleme yaptığımıza benzetebiliriz :)
5-Datetime.AddMonths() Metodu:
Bu metot şu an ki bulunduğumuz ayın sayısal tipine değer ekleme ya da çıkarma yapmamızı sağlar.
6-Datetime.AddSeconds() Metodu:
Bu metot şu an ki saatin saniye cinsine değer ekleme ya da çıkarma yapmamıza olanak tanır.
7-Datetime.AddTicks() Metodu:
Bu metot 1 Ocak 0001 yılı 12:00:00 tarihinden şu an ki ana kadar geçen saniyeye değer ekleme ya da çıkarma yapmamızı sağlar.
8-Datetime.AddYears() Metodu:
Bu metot şu an ki bulunduğumuz yılın sayısal değerine ekleme ya da çıkarma yapmamızı sağlar.
Son olarak bu makaleye bonus olsun diye küçük bir uygulama yapıyoruz,doğum tarihinizden itibaren şu an ki ana kadar
ne kadar zaman geçmiş görelim :)
Bunun için Datetime sınıfından iki ayrı instance alıp birine doğum tarihimizi yıl,ay,gün,saat,dakika,saniye olarak şekilde
overloadlarını dolduruyor diğerine ise sadece şu anı alıyor ardından farkı ilerideki makalelerimizde daha detaylı olarak
göreceğimiz TimeSpan ile yakalayıp messagebox.show() metodu ile ekrana yansıtıyoruz:
Yani ben 18 Ekim 1987 günü saat 22:30:00'da doğduğumu baz aldım ve:
9389 gün 21 saat 39 dakika 41 saniye 4246098 milisaniye kadar yaşıyormuşum,ne diyelim Allah hepimize bol ömür versin :)
Bugünkü makalemizin sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek dileğiyle hoşçakalın ;)
Projeyi İndir
Önceki makalemizde C# karar yapılarını öğrenmiştik ve aynı hızda bugün yeni bir konuya giriş yapıyoruz.Başlıktan da anlaşılacağı gibi programlama dünyasında datetime adında bir kavram vardır ve adından da tahmin edebileceğiniz gibi tarih-zaman ile ilgili işlemlerimizi gerçekleştirebileceğimiz .net framework alt yapılarından birisidir.
Datetime başlı başına bir sınıftır ve içerisinde kendine özgü metodlar ve diğer yapıları barındırır,bu yüzden bu sınıfı bazı yerlerde kullanabilmemiz için instance (örnek) oluşturur ardından bu sınıfla gelen yapıları kullanırız.C# ile Datetime kullanımı oldukça basittir ve aşağıda bazı kullanımlarını göreceğiz ama öncelikle "datetimeUygulamasi" adında yeni bir windows form projesi oluşturuyoruz.Konuyu oldukça hızlı ve kolaylıkla kavrayabileceğimiz için kodlarımızı form_load eventi içerisine yazacağız.
Formun başlığına çift tıkladıktan sonra load bloğuna öncelikle şunu yazıyoruz:
Bunun anlamı şudur; datetime sınıfının bir örneğini aldık ve "date" adındaki bir değişkene yükledik.Dikkat ettiyseniz bugüne kadar hep int,string gibi referans olmayan değişkenler kullanmıştık ve şimdi ise Datetime sınıfından türettiğimiz bir değişken yarattık.
Oluşturduğumuz bu değişkenin sonuna nokta koyarak kendine ait overload (aşırı yüklemeler,diğer metotlar) yapısını
görüyoruz:
Gördüğümüz gibi çeşitli overloadları var ve datetime sınıfını kullanarak yazılım dünyasında çok sık kullanmasakta
yeri geldiğinde çok işlevsel uygulamalar ve kodlar yazabiliyoruz.
Bu arada belki bilmiyor olabilirsiniz ancak .Net Framework mimarisinin adı başındaki nokta işareti hani bu metotları vs
yazdığımız nokta işaretinden geliyor,yani nokta kullandığımız çoğu yer .net framework yazılım mimarisinden gelmektedir. :)
Bu genel kültür bilgisinden sonra şimdi Datetime sınıfını kullanmaya geldi,genel ve sık kullanım şekillerinden bazılarını
şu şekilde görelim:
Öncelikle "suAn" adında string tipinde bir değişken atıyoruz,bunu string tipinde yazmamızın nedeni şimdi öğreneceğimiz
tarih-zaman dönüş değerleri metinsel tipte olacak ve gelen değerleri messagebox.show metoduyla ekranda göstereceğiz.
1-Datetime.ToString() Metodu:
Bu metot zamanın şu anki anını tarih-saat halinde geri döndürür ve format gün.ay.yıl saat:dakika:saniye biçimindedir.
Dönüş tipini ekranda görürsek:
şeklindedir.
2-Datetime.ToShortDateString() Metodu:
Bu metot yalnızca kısa tarih biçimini gösterir ve saat bilgisini vermez,formatı ise gün.ay.yıl şeklindedir ve ekran
görüntüsü şu şekildedir:
3-Datetime.ToShortTimeString() Metodu:
Bu metot yalnızca saat bilgisini gerir döndürür ve formatı saat:dakika şeklindedir:
4-Datetime.ToLongDateString() Metodu:
Bu metot genel günlük hayatımızdaki tarih şeklini verir ve diğer tarih bilgilerine ek olarak bulunduğumuz günün ismini de
geri döndürür,formatı ise gün.ay.yıl gün adı şeklindedir.
5-Datetime.ToLongTimeString() Metodu:
Bu metot yalnızca saat bilgisini geri döndürür ve ToShortTimeString() metoduna ek olarak saniye bilgisini de geri
döndürür,formatı ise saat:dakika:saniye şeklindedir:
6-Datetime.ToUniversalTime() Metodu:
Bu metot kısaca UTC olarak belittiğimiz evrensel zamanı geri döndürür ve dönüş değeri Greenwich sıfırıncı konumunun
değerini verir ancak bu metot tek başına kullanılamaz çünkü geri dönüş değeri yapısal olduğu için bu değerin saat mi yoksa gün mü ya da her ikisi veya diğer kombinasyonlarını mı istediğimizi belirtmeliyiz.Bunun için en kolay yol bu metodun sonuna ToString() ekleyerek 1.metottaki gibi tam zamanı isteyebiliriz,yani kullanımı ToUniversalTime().ToString() dir.
7-Datetime.Day Metodu:
Bu metot ayın kaçıncı gününde olduğumuzu sayısal biçim olan integer tipinde geri döndürür.
8-Datetime.DayOfWeek Metodu:
Bu metot haftanın hangi günündeysek onun adını verir,ancak dönüş ismi günün ingilizce karşılığıdır:
9-Datetime.DayOfYear Metodu:
Bu metot yılın kaçıncı gününde olduğumuzu int olarak geri döndürür.
10-Datetime.Hour Metodu:
Bu metot 24 saatlik dilimin kaçıncı saatinde olduğumuzu gösterir,eğer şu an saat 19:25 ise geri dönüş değer 19 olur.
11-Datetime.Millisecond Metodu:
Bu metot şu an ki saatin kaçıncı milisaniye içerisinde olduğumuzu int olarak geri döndürür,tabi bunu ancak bir bilgisayar
anlayabilirdi :)
12-Datetime.Minute Metodu:
Bu metot ise şu an ki saatin kaçıncı dakikasında olduğumuzu int olarak gerir döndürür,eğer saat şu an 19:27 ise 27
sayısını geri döndürür.
13-Datetime.Month Metodu:
Yılın kaçıncı ayında olduğumuzu int tipinde geri döndürür,eğer bu ay aylardan Temmuz ise 7 sayısını geri döndürür.
14-Datetime.Second Metodu:
Şu an ki saatin kaçıncı saniyesinde olduğumuzu int tipinde geri döndürür,eğer saat şu an 19:29:43 ise 43 sayısını geri
verecektir.
15-Datetime.Ticks Metodu:
Bu metot 1 Ocak 0001 tarihindeki 12:00:00 saatinden geçen saniyeyi temsil eder,eğer o yılda doğduysanız nice yıllara :)
16-Datetime.Year Metodu:
Bu metot hangi yılda olduğumuzu int tipinde geri döndürür ve ben bu makaleyi 2013 yılında yazdığıma göre şu an 2013
sayısını geri döndürecektir.
17-Datetime.DaysInMonth() Metodu:
Bu metot ile bu ayın kaç çektiğini yani bu aydaki gün sayısını yakalarız.
.Net Framework yazılım mimarisindeki Datetime yapıları genel itibariyle birlikte böyle kullanılmaktadır,bu şekilde farklı
metotlara bölünmesinin sebebi tam tarih biçimini elle parçalamak yerine tek seferde kolaylıkla almamıza imkan tanımakta ve biz yazılım uzmanlarının işini oldukça kolaylaştırmaktadır.
Elbette Datetime kullanımı henüz bitmedi,sıra Datetime sınıfının en çok sevdiğim metotlarına geldi yani şu an ki tarihe
dakika,saniye,gün vs gibi bilgileri ekleme çıkarma konusuna geldi ve umarım makale oldukça hoşunuza gidiyordur :)
Bu arada buraya kadar yazdığımız kodlar sırasıyla şu şekildeydi:
Şimdi hiç hız kesmeden ekleme çıkarma işlemlerine geçelim,bu kullanım şekli "Add" sözcüğüyle başlayan metotlar ile
gerçekleşir ve bu metotların overloadları int veya double tipinde sayısal değerler olarak parametre alırlar.
Genel kullanımı şöyledir:
1-Datetime.AddDays() Metodu:
Bu metot bulunduğumu haftanın gün sayısına ekleme ve çıkarma yapar,parametre olarak negatif değer verirsek bugünden belirttiğimiz gün kadar azaldır,pozitif değer verirsek bugüne o kadar gün sayısı ekler:
2-Datetime.AddHours() Metodu:
Bu metot bulunduğumuz saatin int tipine ekleme yapma çıkarmamızı sağlar.
3-Datetime.AddMilliseconds() Metodu:
Bu metot şu anki saatin milisaniye cinsine değer ekleme ya da çıkarma yapmamızı sağlar.
4-Datetime.AddMinutes() Metodu:
Bu metot şu an ki saatin dakikasına değer ekleme ya da çıkarma yapmamızı sağlar,bunu sabah telefon alarmı çalarken 5 dakika erteleme yaptığımıza benzetebiliriz :)
5-Datetime.AddMonths() Metodu:
Bu metot şu an ki bulunduğumuz ayın sayısal tipine değer ekleme ya da çıkarma yapmamızı sağlar.
6-Datetime.AddSeconds() Metodu:
Bu metot şu an ki saatin saniye cinsine değer ekleme ya da çıkarma yapmamıza olanak tanır.
7-Datetime.AddTicks() Metodu:
Bu metot 1 Ocak 0001 yılı 12:00:00 tarihinden şu an ki ana kadar geçen saniyeye değer ekleme ya da çıkarma yapmamızı sağlar.
8-Datetime.AddYears() Metodu:
Bu metot şu an ki bulunduğumuz yılın sayısal değerine ekleme ya da çıkarma yapmamızı sağlar.
Son olarak bu makaleye bonus olsun diye küçük bir uygulama yapıyoruz,doğum tarihinizden itibaren şu an ki ana kadar
ne kadar zaman geçmiş görelim :)
Bunun için Datetime sınıfından iki ayrı instance alıp birine doğum tarihimizi yıl,ay,gün,saat,dakika,saniye olarak şekilde
overloadlarını dolduruyor diğerine ise sadece şu anı alıyor ardından farkı ilerideki makalelerimizde daha detaylı olarak
göreceğimiz TimeSpan ile yakalayıp messagebox.show() metodu ile ekrana yansıtıyoruz:
Yani ben 18 Ekim 1987 günü saat 22:30:00'da doğduğumu baz aldım ve:
9389 gün 21 saat 39 dakika 41 saniye 4246098 milisaniye kadar yaşıyormuşum,ne diyelim Allah hepimize bol ömür versin :)
Bugünkü makalemizin sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek dileğiyle hoşçakalın ;)
Projeyi İndir
sayfanızda anasayfaya geri dönüş butonu olmalı.
Ellerinize sağlık.
Helal
DateTimeCompare ne işe yarar, nasıl kullanılır bu soruların cevaplarını verir misiniz lütfen
Merhabalar Zeynep Hanım, Datetime Compare metodu iki tarih arasında karşılaştırma yaparak hangisinin büyük veya eşit olduğunu ifade eder. Örneğin; Datetime tarih1=new Datetime(2014,12,10,0,0,0); //10.12.2014 - 00:00:00 Datetime tarih2=new Datetime(2014,10,10,0,0,0=; //10.10.2014 - 00:00:00 tarihini karşılaştıralım: int sonuc=Datetime.Compare(tarih1,tarih2); if(sonuc>0) { //tarih 2 daha büyük } else if(sonuc==0) { //her iki tarih birbirine eşit } else if(sonuc<0) { //tarih 2 daha küçük //doğru sonuç bu olur } Faydalı olması dileğiyle.