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;
string format = "MMM ddd d HH:mm yyyy" ;
Console.WriteLine(tarih.ToString(format));
}
|
Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu alacağız.
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());
Console.WriteLine(tarih.ToLongTimeString());
Console.WriteLine(tarih.ToShortDateString());
Console.WriteLine(tarih.ToShortTimeString());
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
|