C# tarih ve saatlerle çalışmak için DateTime
yapısını destekler.
C# dilinde tarih ve zaman oluşturmak için new anahtar kelimesini kullanarak DateTime yapısını kullanabilirsiniz. Aşağıdaki örnekte bir DateTime nesnesi varsayılan değerli kullanarak oluşturulmuştur.
1 2 3 4 5 6 7 8 9 10 11 12 |
class Program { static void Main(string[] args) { DateTime dt = new DateTime(); Console.WriteLine(dt); //varsayılan değer: 1.01.0001 00:00:00 Console.ReadKey(); } } |
Bir DateTime nesnesinin varsayılan ve en düşük değeri 1 Ocak 0001 00:00:00. Maksimum değer 31 Aralık 9999 23:59:59 PM olabilir.
Bir DateTime nesnesine bir başlangıç değeri atamak için DateTime yapısının farklı oluşturucularını kullanınır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
class Program { static void Main(string[] args) { DateTime dt1 = new DateTime(); Console.WriteLine(dt1); //1.01.0001 00:00:00 //Yıl Ay Gün DateTime dt2 = new DateTime(2015, 12, 31); Console.WriteLine(dt2); //31.12.2015 00:00:00 //Yıl Ay Gün Saat Dakika Saniye DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20); Console.WriteLine(dt3); //31.12.2015 05:10:20 //Yıl Ay Gün Saat Dakika Saniye UTC Zaman Dilimi DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 20, DateTimeKind.Utc); Console.WriteLine(dt4); //31.12.2015 05:10:20 Console.ReadKey(); } } |
Yukarıdaki örnekte, yapıcıda bir yıl, bir ay ve bir gün belirtmiştik. Yıl 0001 ile 9999 arasında olabilir ve Ay 1 ile 12 arasında ve gün 1 ile 31 arasında olabilir. Bu aralıkların dışında herhangi bir değerin ayarlanması, bir çalışma zamanı istisnasına neden olur.
1 2 3 4 5 6 7 8 9 10 11 |
class Program { static void Main(string[] args) { DateTime dt = new DateTime(2015, 12, 32); //Hata fırlatır: Gün aralık dışında Console.ReadKey(); } } |
Tarih, saat, saat dilimi, takvim ve kültürü ayarlamak için farklı DateTime oluşturucuları kullanın.
C# Ticks Kullanımı
Ticks, Miladi takvimde 1 Ocak 0001’den 00:00:00.000’de geçen 100 nanosaniyelik aralıklarla ifade edilen bir tarih ve saattir.
Aşağıdaki, Ticks sayısıyla bir DateTime nesnesini başlatır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Program { static void Main(string[] args) { DateTime dt = new DateTime(635570000000000000); Console.WriteLine(DateTime.MinValue.Ticks); //min Ticks değeri Console.WriteLine(DateTime.MaxValue.Ticks); // max Ticks değeri Console.WriteLine(dt); //16.01.2015 10:13:20 Console.ReadKey(); } } |
C# DateTime Static Alanlar
DateTime yapısı statik alanlar, özellikler ve yöntemler içerir. Aşağıdaki örnek, önemli statik alanları ve özellikleri gösterir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Program { static void Main(string[] args) { DateTime currentDateTime = DateTime.Now; //geçerli tarih ve saati döndürür DateTime todaysDate = DateTime.Today; // bugünün tarihini döndürür DateTime currentDateTimeUTC = DateTime.UtcNow;// geçerli UTC tarih ve saatini döndürür DateTime maxDateTimeValue = DateTime.MaxValue; // DateTime'ın maksimum değerini döndürür DateTime minDateTimeValue = DateTime.MinValue; // DateTime'ın minimum değerini döndürür Console.ReadKey(); } } |
C# TimeSpan Kullanımı
TimeSpan, zamanı gün, saat, dakika, saniye ve milisaniye cinsinden temsil etmek için kullanılan bir yapıdır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Program { static void Main(string[] args) { DateTime dt = new DateTime(2020, 12, 31); TimeSpan ts = new TimeSpan(20, 10, 45); DateTime yeniTarih = dt.Add(ts); Console.WriteLine(yeniTarih);// 31.12.2020 20:10:45 Console.ReadKey(); } } |
Tarih Çıkarma
İki tarihin farkını hesaplamak için TimeSpan kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Program { static void Main(string[] args) { DateTime dt1 = new DateTime(2005, 12, 31); DateTime dt2 = new DateTime(2006, 2, 2 ); TimeSpan sonuc = dt2.Subtract(dt1); Console.WriteLine(sonuc); //33.00:00:00 Console.ReadKey(); } } |
Operatörler
DateTime
yapısı +, -, ==, !=, >, <, <=, >= operatörlerini, tarihlerin toplama, çıkarma ve karşılaştırmasını kolaylaştırmak için aşırı yükler. Bunlar tarihlerle çalışmayı kolaylaştırır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class Program { static void Main(string[] args) { DateTime dt1 = new DateTime(2015, 12, 20); DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); TimeSpan time = new TimeSpan(10, 5, 25, 50); Console.WriteLine(dt2 + time); // 1/10/2017 10:36:10 AM Console.WriteLine(dt2 - dt1); //377.05:10:20 Console.WriteLine(dt1 == dt2); //False Console.WriteLine(dt1 != dt2); //True Console.WriteLine(dt1 > dt2); //False Console.WriteLine(dt1 < dt2); //True Console.WriteLine(dt1 >= dt2); //False Console.WriteLine(dt1 <= dt2);//True Console.ReadKey(); } } |
String Tarihi DateTime Nesnesine Çevirme
Geçerli bir tarih ve saat dizesi, Parse(), ParseExact(), TryParse() ve TryParseExact() metodu kullanılarak bir DateTime nesnesine dönüştürülebilir.
Belirtilen dize bir tarih ve saatin geçerli bir temsili değilse, Parse() ve ParseExact() yöntemleri bir istisna atar. Bu nedenle, bir dize geçerli değilse false döndürdükleri için TryParse() veya TryParseExact() yönteminin kullanılması önerilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Program { static void Main(string[] args) { var str = "5/12/2020"; DateTime dt; var isValidDate = DateTime.TryParse(str, out dt); if (isValidDate) Console.WriteLine(dt); else Console.WriteLine($"{str} geçerli bir tarih değildir."); Console.ReadKey(); } } |