C# Tarih ve Saat İşlemleri Datetime Nesnesi

nhtctn nhtctn

 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.

DateTime bugun = DateTime.Now;
                Console.WriteLine("Uygulamayı " + bugun + " tarihinde çalıştırdın.");

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

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.

DateTime tarih = new DateTime(1938, 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
DateBu örnek tarih bileşenini alır.
DayBu örnek tarafından temsil edilen ayın gününü alır.
DayOfWeekBu örnek tarafından temsil edilen haftanın gününü alır.
DayOfYearBu örnek tarafından temsil edilen yılın günü alır.
HourBu örnek tarafından temsil edilen tarih saat bileşenini alır.
KindBu ö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.
MillisecondBu örnek tarafından temsil edilen tarih milisaniye bileşeninin alır.
MinuteBu örnek tarafından temsil edilen tarih dakika bileşenini alır.
MonthBu örnek tarafından temsil edilen tarih ay bileşenini alır.
NowAlır bir DateTime geçerli tarih ve saat bu bilgisayarda, yerel zaman olarak ifade edilen ayarlanır nesnesi.
SecondTarihin saniye bileşenini bu örneği tarafından temsil edilen alır.
TicksTarihi temsil eden ticks sayısını ve bu örneğinin saati alır.
TimeOfDayBu örnek için günün saatini alır.
TodayGeçerli tarihi alır.
UtcNowAlır bir DateTime Geçerli tarih ve saati Eşgüdümlü Evrensel Saat (UTC) olarak ifade edilen, bu bilgisayarda ayarlanmış nesnesi.
YearBu ö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.

DateTime tarih = new DateTime(2020, 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

 DateTime ilkTarih = new DateTime(2020, 12, 30);
            DateTime ikinciTarih = new DateTime(2021, 1, 1);

            TimeSpan span = ikinciTarih.Subtract(ilkTarih);

            Console.WriteLine($"{span.TotalDays} gün sonra yeni yıla gireceğiz.");

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şturduğumuz tarihe DayOfWeek ekleyerek, o güne ait ismi DayOfWeek türünde alabiliriz.

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.

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));

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

 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ü

    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

Yorum yazın

BENZER YAZILAR