Genişletme Metotlarım – 3 (Extension Methods)

Bu yazımda ise tarih işlemleri ile ilgili kullanmış olduğum genişletme metotlarını (Extension Methods) paylaşacağım. Şimdilik paylaşabileceğim metotlar bunlar. Daha sonraları bu yazı dizisine yenilerini ekleyebilirim. Genel olarak bu blogta günübirlik yaşadıklarımı kullandıklarımı paylaşıyorum. Bu nedenle ileri ki zamanlarda yine kullandığım metotları paylaşacağım.

public static String GecenSure(this DateTime tarih)
{
    DateTime sonDeger = DateTime.Now;
    TimeSpan zaman = sonDeger.Subtract(tarih);
    string toplamDakika = "";
    //Burada kullanılan ToInt32 metotu bir önceki yazıda kullanmıştık.
    toplamDakika = zaman.TotalMinutes.ToInt32() == 0 ? "Şimdi" : string.Concat(zaman.TotalMinutes.ToInt32()," dakika önce");
    return toplamDakika;
}

Bu metotla DateTime tipindeki tarihin günümüzden ne kadar süre önce olduğunu gösteren metottur. Genelde yorumlarda kullanırım. 5 dakika önce yazdı gibi bir sonuç çıkarır. Kullanımı : GecenSure metodu DateTime tipinden bir parametre aldığı için bir önceki yazımda kullanmış olduğum ToDateTime() metotu ile DateTime tipine dönüştürüp geçen süreyi hesaplatıyorum.

string gecenSure = txtBox1.Text.ToDateTime().GecenSure();

Üstteki GecenSure metoduyla benzer bir yapıda olan bu metot Bugün, Dün, Tarih gibi değerler verir. Kullanımı GecenSure metodu gibidir.

public static string TarihYaz(this DateTime tarih)
{
    DateTime simdi = DateTime.Now;
    string s;

    if (simdi.Date == tarih.Date)
s = "Bugün";
    else if (tarih.Date.AddDays(1.0).Date == simdi.Date)
s = "Dün";
    else
s = String.Format("{0:00}.{1:00}.{2}", tarih.Day, tarih.Month, tarih.Year);

    return s;
}

Yukarıdaki metoda bool tipindeki parametre ile aşırı yükleme (Overloading) yapıyoruz. Bugün 15:45'te gibi bir sonuç çıkarmaktadır.

public static string TarihYaz(this DateTime tarih, bool saat)
{
    DateTime simdi = DateTime.Now;
    string s;
    if (tarih.Hour == 0 && tarih.Minute == 0 && tarih.Second == 0)
    {
if (simdi.Date == tarih.Date)
    s = "Bugün";
else if (tarih.Date.AddDays(1.0).Day == simdi.Date.Day)
    s = "Dün";
else
    s = string.Format("{0:00}.{1:00}.{2}", tarih.Day, tarih.Month, tarih.Year);
    }
    else
    {
if (simdi.Date == tarih.Date)
    s = string.Format("Bugün {0:00}:{1:00}", tarih.Hour, tarih.Minute);
else if (tarih.Date.AddDays(1) == simdi.Date)
    s =string.Format("Dün {0:00}:{1:00}", tarih.Hour, tarih.Minute);
else
    s = string.Format("{0:00}.{1:00}.{2} {3:00}:{4:00}", tarih.Day, tarih.Month, tarih.Year, tarih.Hour, tarih.Minute);
    }
    return s;
}

Tarihi istediğimiz formatta almak için kullanıyoruz. Ben tarihler arasına (-) "tire" koyarak ayırdım.

public static String TarihFormala(this DateTime tarih)
{
string s = string.Format("{0}-{1:00}-{2:00} {3:00}:{4:00}", tarih.Year, tarih.Month, tarih.Day, tarih.Hour, tarih.Minute);
return s;
}

Buradaki metotların kullanımı ilk örnekteki gibi olduğu için hepsini tekrar tekrar yazmadım. Kolay gelsin...

Select ifadesi ve Where Kullanımı Önceki Yazı

Select ifadesi ve Where Kullanımı

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır? Sonraki Yazı

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır?

Yorum/Soru Yazın