Tarih ve Saat İşlemleri

   C# dilini kullanırken yapacağımız tarih ve zaman içeren işlemler için DateTime ve TimeSpan yapılarını kullanırız. Bu iki yapı, “System” isim alanı içerisinde yer almaktadır.

 

DateTime Yapısının oluşturulması

       Bir DateTime yapısı oluşturabilmek için birden fazla yapıcı metot bulunmaktadır. Bunlardan yaygın olarak kullanılanları örneklerde kullanacağım. Tümünü bu linkten  inceleyebilirsiniz.

DateTime yeniTarih = new DateTime(yıl , ay, gün);
DateTime yeniTarih2 = new DateTime(yıl , ay, gün,saat,dakika,saniye);

DateTime ile bugünün tarihi yazılması

       Şimdi DateTime yapısına basit bir örnek ile başlayalım. Uygulamamızda o an bulunulan tarihi ekranda gösterelim.  Bugünün tarihini alırken doğrudan DateTime yapısına “.Now” özelliği ile erişebiliriz.

       Bugünün tarihini gösterirken iki farklı seçeneğimiz vardır.

       Now: bulunulan tarih ile beraber saat bilgisini de verir.

       Today: sadece bulunulan tarihi verir. Saat bilgisini “00:00:00” olarak gösterir.

        static void Main(string[] args)
        {
            DateTime bugun = DateTime.Now;
            Console.WriteLine("Uygulamayı " + bugun + " tarihinde çalıştırdın.");
        }

Today ile beraber tarih yazdırılması;

        static void Main(string[] args)
        {
            DateTime bugun = DateTime.Today;
            Console.WriteLine("Uygulamayı çalıştırdığın gün: " + bugun + ".");
        }

 

Belirli bir tarih oluşturma

       Şimdi kendimiz bir DateTime yapısı oluşturalım.  Bunun için DateTime’ın yapıcı metotlarından  birini kullanacağız.

   static void Main(string[] args)
        {
            DateTime tarih= new DateTime(2017,11,10, 9,5,0);
            Console.WriteLine(tarih + " tarihinde M.Kemal Atatürk aramızdan ayrıldı.");
        } 

 

DateTime Özellikleri

       DateTime yapısındaki bir değişkenimize ait kullanabileceğimiz özellikler;

Adı

Açıklama

Date

Bu örnek tarih bileşenini alır.

Day

Bu örnek tarafından temsil edilen ayın gününü alır.

DayOfWeek

Bu örnek tarafından temsil edilen haftanın gününü alır.

DayOfYear

Bu örnek tarafından temsil edilen yılın günü alır.

Hour

Bu örnek tarafından temsil edilen tarih saat bileşenini alır.

Kind

Bu örnek tarafından temsil edilen zaman yerel saat, Eşgüdümlü Evrensel Saat (UTC) ve bunların hiçbiri göre gösteren bir değer alır.

Millisecond

Bu örnek tarafından temsil edilen tarih milisaniye bileşeninin alır.

Minute

Bu örnek tarafından temsil edilen tarih dakika bileşenini alır.

Month

Bu örnek tarafından temsil edilen tarih ay bileşenini alır.

Now

Alır bir DateTime geçerli tarih ve saat bu bilgisayarda, yerel zaman olarak ifade edilen ayarlanır nesnesi.

Second

Tarihin saniye bileşenini bu örneği tarafından temsil edilen alır.

Ticks

Tarihi temsil eden ticks sayısını ve bu örneğinin saati alır.

TimeOfDay

Bu örnek için günün saatini alır.

Today

Geçerli tarihi alır.

UtcNow

Alır bir DateTime Geçerli tarih ve saati Eşgüdümlü Evrensel Saat (UTC) olarak ifade edilen, bu bilgisayarda ayarlanmış nesnesi.

Year

Bu örnek tarafından temsil edilen tarihin Yıl bileşenini alır.

 

 

Sık Kullanılan Yardımcı Metotlar

AddDays(gün) :  belirtilen gün sayısı kadar mevcut tarihe gün eklemesi yapar.

AddHours(saat) : belirtilen saat kadar mevcut tarihe saat eklemesi yapar.

AddMiliseconds(milisaniye) : belirtilen milisaniye kadar mevcut tarihe milisaniye eklemesi yapar.

AddMinutes(dakika) : belirtilen dakika kadar mevcut tarihe dakika eklemesi yapar.

AddMonths(ay) : belirtilen ay kadar mevcut tarihe ay eklemesi yapar.

AddSeconds(saniye) : belirtilen saniye kadar mevcut tarihe saniye eklemesi yapar.

AddYears(yıl) : belirtilen yıl kadar mevcut tarihe yıl eklemesi yapar.

Subtract(çıkarılacak DateTime) : mevcut tarihten verilen DateTime tipinde yeni tarihi çıkartır.

Subtract(çıkarılacak TimeSpan) : mevcut tarihten verilen TimeSpan tipinde yeni tarihi çıkartır.

ToString() : mevcut tarihi string türüne dönüştürür. Format belirtilmiş işe, belirtilen formatta dönüşüm yapılır.

 

Yardımcı metotların kullanımı

       Örnek olarak, yıl başını ve bir sonraki yıl başını bize gösteren bir uygulama yazalım.

        static void Main(string[] args)
        {
            DateTime tarih= new DateTime(2017,1,1);
            Console.WriteLine(tarih + " tarihi yeni yıl başlangıcıdır.");
            tarih = tarih.AddYears(1);
            Console.WriteLine(tarih + " tarihi de yeni yıl başlangıcıdır.");
        }

 

İki tarih arasındaki gün sayısını bulmak

       Vermiş olduğumuz iki tarih arasındaki gün sayısını hesaplayan bir başka örnek c# uygulaması yazalım.

       İki tarih arasındaki farkı hesaplarken metot bize TimeSpan türünde dönüş yapacaktır. Bunun için farkı elde ederken bir TimeSpan türünde değişkene almamız gerekecektir.

       TimeSpan türündeki değişkene TotalDays özelliğini kullanarak bize aradaki farkı gün cinsinden verecektir.

       static void Main(string[] args)
        {
            DateTime ilkTarih = new DateTime(2017, 12, 3);
            DateTime ikinciTarih = new DateTime(2018, 1, 1);

            TimeSpan span = ikinciTarih.Subtract(ilkTarih);

            Console.WriteLine("{0} gün sonra 2018 yılına gireceğiz.", span.TotalDays);
        }

 

 

Kullanabileceğiniz diğer TimeSpan özellikleri;

TotalHour : farkı saat cinsinden verir.

TotalMilisecond : farkı milisaniye cinsinden verir.

TotalMinutes : farkı dakika cinsinden verir.

TotalSeconds : farkı saniye cinsinden verir.

 

Verilen tarihin hangi gün olduğunu bulmak

       Oluşturuduğumuz tarihe DayOfWeek ekleyerek, o güne ait ismi DayOfWeek türünde alabiliriz.

      static void Main(string[] args)
        {
            DateTime bugun = DateTime.Now;
            Console.WriteLine("Bugün günlerden: " + bugun.DayOfWeek);
        }

 

Tarih ve Saatin formatlı gösterimi

       Elimizdeki DateTime değişkenini ekranda gösterirken farklı formatlarda göstermemiz gerekebilir. Bu gibi durumlar için bir takım kısaltmalardan ve söz dizimlerinden faydalanırız. Bunlar aşağıdaki gibidir.

  static void Main()
    {
        DateTime tarih = DateTime.Now;//bugünün tarihinin alınması
        string format = "MMM ddd d HH:mm yyyy";//tarihe uygulanacak format.
        Console.WriteLine(tarih.ToString(format));
    }

       Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu alacağız.

Dec Sun 22 23:15 2017
Kullanılabilecek diğer DateTime formatları:
MMM     üç karakterli ay ismi
ddd     üç karakterli gün ismi
d       bulunulan günün rakamsal değeri
HH      24 saatlik gösterimde saat değeri
h       12 saatlik gösterimde saat değeri
mm      iki basamaklı dakika değeri
yyyy    dört basamaklı yıl değeri
yy      iki basamaklı yıl değeri(son iki basamak)

Tek karakterli formatlar

static void Main()
    {
        DateTime tarih = DateTime.Now;
        Console.WriteLine(tarih.ToString("d"));
        Console.WriteLine(tarih.ToString("D"));
        Console.WriteLine(tarih.ToString("f"));
        Console.WriteLine(tarih.ToString("F"));
        Console.WriteLine(tarih.ToString("g"));
        Console.WriteLine(tarih.ToString("G"));
        Console.WriteLine(tarih.ToString("m"));
        Console.WriteLine(tarih.ToString("M"));
        Console.WriteLine(tarih.ToString("o"));
        Console.WriteLine(tarih.ToString("O"));
        Console.WriteLine(tarih.ToString("s"));
        Console.WriteLine(tarih.ToString("t"));
        Console.WriteLine(tarih.ToString("T"));
        Console.WriteLine(tarih.ToString("u"));
        Console.WriteLine(tarih.ToString("U"));
        Console.WriteLine(tarih.ToString("y"));
        Console.WriteLine(tarih.ToString("Y"));
    }

       Yukarıdaki uygulamanın çıktısı aşağıdaki gibidir.

d   3.12.2017
D   3 Aralık 2017 Pazar
f   3 Aralık 2017 Pazar 22:41
F   3 Aralık 2017 Pazar 22:41:50
g   3.12.2017 22:41
G   3.12.2017 22:41:50
m   3 Aralık
M   3 Aralık
o   2017-12-03T22:41:50.5366721+03:00
O   2017-12-03T22:41:50.5366721+03:00
s   2017-12-03T22:41:50
t   22:41
T   22:41:50
u   2017-12-03 22:41:50Z
U   3 Aralık 2017 Pazar 19:41:50
y   Aralık 2017
Y   Aralık 2017

DateTime string dönüşümü

        static void Main(string[] args)
        {
            DateTime tarih = DateTime.Now;
            Console.WriteLine(tarih.ToLongDateString());  // D.
            Console.WriteLine(tarih.ToLongTimeString());  // T.
            Console.WriteLine(tarih.ToShortDateString()); // d.
            Console.WriteLine(tarih.ToShortTimeString()); // t.
            Console.WriteLine(tarih.ToString());
        }

Ekran çıktısı aşağıdaki gibidir.

3 Aralık 2017 Pazar
22:45:13
3.12.2017
22:45
3.12.2017 22:45:13

 

 

 

 

 

Comments (3) -

Add comment