C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri

player time C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri  dot net c sharp Merhaba arkadaşlar, yeni yıla saatler kalmış iken şurdan bişiler karalıyayım dedim icon razz C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri  dot net c sharp

Bu dökümanda System isim alanında bulunun DateTime ve TimeSpan yapılarını inceleyeceğiz.

Önce DateTime sınıfında bulunan statik üyeleri inceleyelim. Aşağıdaki örnekte DateTime yapısınını tutabileceği en büyük ve en küçük tarih bilgisini öğreniyoruz.

            Console.WriteLine(DateTime.MinValue);
            Console.WriteLine(DateTime.MaxValue);

Ekrana aşağıdaki gibi yazdı ;

01.01.0001 00:00:00
31.12.9999 23:59:59


DateTime sınıfının en çok kullanılan ve en önemli iki özelliği Today ve Now’dır. Now sistemin o anki tarih ve saat bilgisinin verir, Today ise sadece tarihi verir, saat bilgisi ise 00:00:00 olarak verilir. Bu iki özelliği kullanalım ;

            Console.WriteLine(DateTime.Today);
            Console.WriteLine(DateTime.Now);

Bu seferde ekrana ;

01.01.2010 00:00:00
01.01.2010 00:05:15

Yazdırıldığını görüyoruz. Now gördüğünüz gibi saate kadar veriyor, ama Today özelliğinde sadece tarih bilgisini alabiliyoruz.

Sınıf üzerinden bu elemanlara ulaştığımız gibi, sınıfın nesne örneğini oluşturarak ta bu özellikleri kullanabiliriz, yani aşağıdaki örnek geçerlidir.

            DateTime nesnemiz = new DateTime();
            nesnemiz = DateTime.Now;
            Console.WriteLine(nesnemiz );

Sefer Algan tarafından hazırlanmış konuyla ilgili güzel bir tablo var, açıklamalardaki parantez özelliğin türünü göstermektedir.

Date DateTime nesnesine ilişkin saat dışındaki bilgiyi verir. (DateTime)
Month DateTime nesnesinin ay bilgisini verir. (int)
Day DateTime nesnesinin gün bilgisini verir. (int)
Year DateTime nesnesinin yıl bilgisini verir. (int)
DayOfWeek DateTime nesnesinin haftanın kaçıncı günü olduğunu verir. (DayOfWeek enum sabiti)
DayOfYear DateTime nesnesinin yılın kaçıncı gününe denk geldiğini verir. (int)
TimeOfDay Geçerli gün için 00:00:00′dan itibaren ne kadar zaman geçtiğini TimeSpan nesnesi olarak verir. (TimeSpan)
Hour DateTime nesnesinin saat bilgisini verir. (int)
Minute DateTime nesnesinin dakika bilgisini verir. (int)
Second DateTime nesnesinin saniye bilgisini verir. (int)
Milisecond DateTime nesnesinin milisaniye bilgisini verir. (1 saniye=1000 milisaniye)(int)
Ticks x saniyenin 10 milyonda biri olmak üzere, DateTime nesnesindeki tarih ile 1 Ocak 0001 00:00:00 arasındaki x sayısını verir. (long)

Bir DateTime nesnesini şu yöntemlerle oluşturabiliriz, altta hepsini bulamazsınız toplam 12 yapıcı metod (Constructor) bulunmaktadır.

DateTime nesne=new DateTime(long tick_sayisi);
DateTime nesne=new DateTime(int yil,int ay,int gun);
DateTime nesne=new DateTime(int yil,int ay,int gun,int saat,int dakika,int saniye);

İlgili özellikleri verdiğimize göre basit bir program yazabiliriz. Gelin bugüne kadar kaç gün yaşadığımızı bulan bir program yazalım.

using System;
using System.Collections.Generic;
using System.Text;

namespace Nurullah
{
    class Program
    {
        static void Main(string[] args)
        {
            //kullanıcıdan alacağımız değişkenleri tanımlayıp, değer aldık
            int yil, ay, gun;

            Console.WriteLine("Kaçgün yaşadığınızı öğrenelim...\n--------------");
            Console.Write("Yıl : ");
            yil = Convert.ToInt32(Console.ReadLine());
            Console.Write("Ay  :");
            ay = Convert.ToInt32(Console.ReadLine());
            Console.Write("Gün :");
            gun = Convert.ToInt32(Console.ReadLine());

            //aldığımız değerlere göre sınıfımızı kurduk
            DateTime DogumTarihi = new DateTime(yil, ay, gun);

            //her 4 yılda bir gün eklendiğinden aradan kaç 4 yıl geçmiş onu bulduk
            int extraGun = (DateTime.Today.Year - DogumTarihi.Year) / 4;

            /*Burası işin matematiksel kısmı;
             *Önce aradan kaç sene geçmiş onu bulup 365 ile çarptık,
             *DayOfYear özelliği ile o seneki ve bu seneki günleri çıkarıp sonuca ekledik,
             *Son olarakta extraGun u ekleyip ekrana yazdırdık. */
            int sonuc = (DateTime.Today.Year - DogumTarihi.Year) * 365 + (DateTime.Today.DayOfYear - DogumTarihi.DayOfYear) + extraGun;
            Console.WriteLine(sonuc);
            Console.Read();

        }
    }
}

Dikkat ettiyseniz int bir değişkene casting operatorunu kullanmadan değer atadım, çünkü kullandığım özelliklerin tümününü geri dönüş tipi int dir.

Şimdi gelin aynı örneği yukarıdaki karmaşıklığı giderecek şekilde yazalım. İşte tam burada TimeSpan devreye girior.

using System;
using System.Collections.Generic;
using System.Text;

namespace Nurullah
{
    class Program
    {
        static void Main(string[] args)
        {
            //kullanıcıdan alacağımız değişkenleri tanımlayıp, değer aldık
            int yil, ay, gun;

            Console.WriteLine("Kaçgün yaşadığınızı öğrenelim...\n--------------");
            Console.Write("Yıl : ");
            yil = Convert.ToInt32(Console.ReadLine());
            Console.Write("Ay  :");
            ay = Convert.ToInt32(Console.ReadLine());
            Console.Write("Gün :");
            gun = Convert.ToInt32(Console.ReadLine());

            DateTime DogumTarihi = new DateTime(yil, ay, gun);
            DateTime Bugun = DateTime.Today;

            TimeSpan sonuc = Bugun - DogumTarihi;

            Console.WriteLine(sonuc.Days);
            Console.Read();

        }
    }
}

İki DateTime türünü birbirinden çıkardığınız zaman sonuç TimeSpan nesnesidir.
TimeSpan ve DateTime yapılarında tanımlanmış birçok metot vardır, bu metotlar genellikle DateTime ve TimeSpan yapıları arasındaki ilişkiye dayanmaktadır.
TimeSpan yapısı tarih, saat vs tutmaz, tutmaz derken yanlış anlaşılmasın tutar ama sadece rakamsal olarak tutar, alttaki örneğe bakarak daha iyi anlayabiliriz.

            TimeSpan time = new TimeSpan(400, 215, 555, 456);

Burada time nesnesine 400 gün, 215 saat,555 dakika, 456 saniye yüklenmiştir.
İşin güzel tarafı DateTime ile TimeSpan arasındaki ilişki. Her iki türü kendi arasında toplayıp çıkarabiliyoruz.
Biz yukarıda kurduğumuz time nesnesini de kullanabilirdik ama gelin kullanıcıdan gün ve saat değerlerini alıp, bugünün tarihine ekleyelim ardından çıkan günü ekrana yazdıralım.

using System;
using System.Collections.Generic;
using System.Text;

namespace Nurullah
{
    class Program
    {
        static void Main(string[] args)
        {
            int gun, saat;
            Console.WriteLine("Kaç gün eklensin ? :");
            gun = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Kaç saat eklensin ? :");
            saat = Convert.ToInt32(Console.ReadLine());

            TimeSpan time = new TimeSpan(gun, saat, 0, 0, 0);
            DateTime zaman = DateTime.Today + time;

            Console.WriteLine(zaman.DayOfWeek);
            Console.Read();

        }
    }
}

Gördüğünüz gibi rahatça toplayabiliyoruz, aynı zamanda çıkaradabilirdik. Gaza gelip bölme ve çarpma denemeyin icon smile C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri  dot net c sharp )
Saatlerde 24 e bölünüp aslında gün olarak ekleniyor, denediğiniz de bunu da farkedebilirsiniz. icon smile C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri  dot net c sharp
Elimden geldiği kadar gene sade anlatmaya çalıştım, umarım anlamışsınızdır, bu arada kafam şişti sabahtan beri havai fişekler patlatılıyor.
Herkes ALLAHa emanet olsun, varsa sorunuz buyrunuz sorunuz icon smile C# : DateTime Sınıfı İle Tarih ve Zaman İşlemleri  dot net c sharp

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
1 Yorum
  1. Ahmet says:

    güzel bir derleme olmuş, teşekürler.

Yorum yaz

XHTML: Kullanabileceğiniz taglar : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>