C# TimeSpan İle Süre Formatlama
Merhaba,
Bu içeriğimizde sizlere C#’ta DateTime yapısından farklı olan ve elimizdeki bir değere göre süre tutmamızı sağlayan TimeSpan tipinden bahsedeceğim.
TimeSpan, DateTime gibi struct(yapı) olarak tasarlanmış bir süre temsil eden değişkendir.
static void Main(string[] args)
{
TimeSpan time = new TimeSpan(3, 2, 17, 1, 12);
Console.WriteLine(time);
Console.Read();
}
Yukarıdaki örnek kod bloğunu incelerseniz eğer 3 gün, 2 saat, 17 dakika, 1 saniye ve 12 milisaniye olarak bir süre tutabilir ve aşağıdaki gibi sonuç alabiliriz.
static void Main(string[] args)
{
TimeSpan time1 = TimeSpan.FromDays(5);
TimeSpan time2 = TimeSpan.FromHours(4);
TimeSpan time3 = TimeSpan.FromMinutes(3);
TimeSpan time4 = TimeSpan.FromSeconds(2);
TimeSpan time5 = TimeSpan.FromMilliseconds(1);
TimeSpan time6 = TimeSpan.FromTicks(10);
Console.WriteLine(time1);
Console.WriteLine(time2);
Console.WriteLine(time3);
Console.WriteLine(time4);
Console.WriteLine(time5);
Console.WriteLine(time6);
Console.Read();
}
Yukarıdaki örnek kod bloğunun çıktısı ise aşağıdaki gibi olacaktır.
FromDays gün, FromHours saat, FromMinutes dakika, FromSeconds saniye ve FromMilliseconds milisaniye eklemek içindir.

static void Main(string[] args)
{
TimeSpan time1 = TimeSpan.FromDays(5);
TimeSpan time2 = TimeSpan.FromHours(4);
TimeSpan time3 = TimeSpan.FromMinutes(3);
TimeSpan time4 = TimeSpan.FromSeconds(2);
TimeSpan time5 = TimeSpan.FromMilliseconds(1);
TimeSpan time6 = TimeSpan.FromTicks(10);
TimeSpan time7 = time1.Add(time2).Add(time3).Add(time4).Add(time5).Add(time6);
Console.WriteLine(time7);
Console.Read();
}
Bu şekilde Add metodu kullanılarak elimizdeki mevcut süreye herhangi bir zaman kavramını ekleyebilmekteyiz.

static void Main(string[] args)
{
TimeSpan time1 = TimeSpan.FromDays(5);
TimeSpan time2 = TimeSpan.FromMinutes(4);
TimeSpan time3 = time1.Subtract(time2);
Console.WriteLine(time3);
Console.Read();
}
Subtract metodu sayesinde iki süre arasındaki farkı bulabilmekteyiz.

static void Main(string[] args)
{
Console.WriteLine(TimeSpan.MaxValue);
Console.WriteLine(TimeSpan.MinValue);
Console.WriteLine(TimeSpan.Zero);
Console.Read();
}
MaxValue, MinValue ve Zero propertyleri ile sırasıyla TimeSpan’ın alabileceği en büyük, en küçük ve sıfırlanmış değerleri elde edebilmekteyiz.

static void Main(string[] args)
{
Console.WriteLine(TimeSpan.TicksPerDay);
Console.WriteLine(TimeSpan.TicksPerHour);
Console.WriteLine(TimeSpan.TicksPerMinute);
Console.WriteLine(TimeSpan.TicksPerSecond);
Console.WriteLine(TimeSpan.TicksPerMillisecond);
Console.Read();
}
TimeSpan tiklerden oluştuğu için TicksPerDay ile her günün, TicksPerHour ile her saatin, TicksPerMinute ile her dakikanın, TicksPerSecond ile her saniyenin ve TicksPerMillisecond ile her milisaniyenin kaç tikten oluştuğunu görebiliriz.

static void Main(string[] args)
{
TimeSpan time1 = new TimeSpan(-1, -1, -25, -1, -1);
Console.WriteLine(time1.Duration());
Console.Read();
}
Duration metodu ile elimizdeki zamanın mutlak değerini alabiliriz.

static void Main(string[] args)
{
TimeSpan time1 = new TimeSpan(3, 5, 7, 8, 9);
Console.WriteLine("Gün = " + time1.Days);
Console.WriteLine("Kalan Gün = " + time1.TotalDays);
Console.WriteLine("Saat = " + time1.Hours);
Console.WriteLine("Kalan Saat = " + time1.TotalHours);
Console.WriteLine("Dakika = " + time1.Minutes);
Console.WriteLine("Kalan Dakika = " + time1.TotalMinutes);
Console.WriteLine("Saniye = " + time1.Seconds);
Console.WriteLine("Kalan Saniye = " + time1.TotalSeconds);
Console.WriteLine("Mili Saniye = " + time1.Milliseconds);
Console.WriteLine("Kalan Mili Saniye = " + time1.TotalMilliseconds);
Console.Read();
}
Yukarıdaki kod bloğunu incelerseniz eldeki sürenin nicel olarak kavramsal zamanıyla birlikte, toplam yani kalan zamanınıda hesaplayabilmekteyiz. Çağırdığınız kavramın Total.. ile başlayan propertysi toplamı vermektedir.
Evet, TimeSpan structı ile yukarıdaki zamansal işlemlerin hepsini performanslı bir şekilde gerçekleştirebilirsiniz.
Sonraki yazılarımızda görüşmek üzere…
İyi çalışmalar…



Hocam emek gösterip hazırladığınız için çok teşekkür ederim. Böyle türkçe bir kaynak olması çok güzel. Bazen docstan pek bir şey anlamıyorum. Bugünde benim iin öyle oldu. Emeklerinize sağlık. Allah razı olsun hocam.