Datetime ile Çalışmak (Timespan)

Bu yazımda tarih ve zamanların kullanımını ve timespan nesnesinden bahsetmeye çalışacağım.

Bu yazımda tarih ve zaman ların kullanımını ve timespan nesnesinden bahsetmeye çalışacağım.

Zamanın ayrıntılı şekilde ele alındığı uygulamalar çoğaldı. Örneğin; şu sıralar popüler olan fırsat sitelerinde her fırsatı yakalamak için belirli bir zaman dilimi içerisinde satın alma işlemini gerçekleştirmeniz gerekiyor. Bir diğer örnek ise Facebook sayfasındaki yaptığınız gönderilerin 1 saat önce paylaştı vb gibi bilgilerin verilmesi.

Şimdi bu işleme bir örnek verelim. Başlangıç ve bitiş zamanı verilen bir uygulama yapalım ve sonuç olarak bize iki tarih arasındaki farkı versin. Bunun için bir Asp.net web sitesi oluşturalım ve bir sayfa açalım ve sayfamızın tasarımını aşağıdaki gibi olmasını sağlayalım.




<aspropDownList ID="ddlStartHour" runat="server"></aspropDownList>

<aspropDownList ID="ddlStartMinute" runat="server"></aspropDownList>

 <aspropDownList ID="ddlStartSecond" runat="server"></aspropDownList> 



<asp:TextBox ID="TxtCalenderFirst" runat="server"></asp:TextBox>

<asp:Image ID="Image1" runat="server" Height="24px" 

                            ImageUrl="~/calendar_empty.png" Width="24px" />



Bu kodları birde bitiş satırında görülen dropdownlistler için de yazıyorsunuz. Bu kontrolleri göstermemin nedeni isimlendirmelerini görmenizdi.

Daha sonra dropdownlist kontrollerini doldurmak için kod yazmamız gerekecek. Sırası ile saniye, dakika ve saat olarak dolduracağız. Şimdi sayfamızın code-behind kısmına geçerek bir method yazıyoruz.


void LoadDateTime()

    {

        ddlStartHour.Items.Add(new ListItem("Saat", ""));

        ddlFinishHour.Items.Add(new ListItem("Saat", ""));



        for (int i = 0; i < 24; i++)

        {

            if (i < 10)

            {

                ddlStartHour.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

                ddlFinishHour.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

            }

            else

            {

                ddlStartHour.Items.Add(new ListItem(i.ToString(), i.ToString()));

                ddlFinishHour.Items.Add(new ListItem(i.ToString(), i.ToString()));

            }

        }



        ddlStartMinute.Items.Add(new ListItem("Dakika", ""));

        ddlStartSecond.Items.Add(new ListItem("Saniye", ""));

        ddlFinishMinute.Items.Add(new ListItem("Dakika", ""));

        ddlFinishSecond.Items.Add(new ListItem("Saniye", ""));



        for (int i = 0; i < 60; i++)

        {

            if (i < 10)

            {

                ddlStartMinute.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

                ddlStartSecond.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

                ddlFinishMinute.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

                ddlFinishSecond.Items.Add(new ListItem("0" + i.ToString(), "0" + i.ToString()));

            }

            else

            {

                ddlStartMinute.Items.Add(new ListItem(i.ToString(), i.ToString()));

                ddlStartSecond.Items.Add(new ListItem(i.ToString(), i.ToString()));

                ddlFinishMinute.Items.Add(new ListItem(i.ToString(), i.ToString()));

                ddlFinishSecond.Items.Add(new ListItem(i.ToString(), i.ToString()));

            }

        }

    }



Şimdi belirtilen değerler yüklendi mi? Hayır, çünkü biz bir method tanımladık bunu page_load olayında kullanmadık.

[img]http://resim.sanalkurs.net/uploads/sadf.jpg[img]

Kullandıktan sonra hesaplama butonuna yazacağımız kodları yazalaım. DateTime tipindeki değişkenler arasında çıkarma işlemi yapabilmemiz için Timespan nesnesini kullanırız. Timespan nesnesi oluşan değerleri bize double tipinde verir.


// ilk olarak seçilen değerleri tarih formatına çevirelim.

        DateTime dtStart = new DateTime(1990, 06, 08,

           int.Parse(ddlStartHour.SelectedValue),

           int.Parse(ddlStartMinute.SelectedValue),

           int.Parse(ddlStartSecond.SelectedValue));



        DateTime dtFinish = new DateTime(2011, 10, 14,

            int.Parse(ddlFinishHour.SelectedValue),

            int.Parse(ddlFinishMinute.SelectedValue),

            int.Parse(ddlFinishSecond.SelectedValue));



        // timespan nesnesinin kullanımı

        TimeSpan ts = dtFinish.Subtract(dtStart);

        // bu nesneyi kullanarak toplam saniye,dakika... gibi değerleri alabiliriz.

       

        Label3.Text = "Toplam Gün   :"+ ts.TotalDays.ToString();


Evet örneğimizi bitirdiğimize göre son halini görmekde hakkımız olsa gerek.



İşlemlerimizin sonuna geldik umarım yararlı olmuştur.Bol kodlu günler dilerim.

İyi çalışmalar

  • Etiketler;
Yunus Emre Keskin
Sakarya Üniversitesi BÖTE bölümü son sınıf öğrencisi. Üniversitenin ilk yılında Microsoft teknolojileriyle tanıştı ve 3 yıldır bu konularda çalışmalar ve projeler üretiyor. <p>Burada yayınladığı yazılar yapmış olduğu projelerde edindiği bilgilere dayanmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git