Android – İki Tarih Arasındaki Farkı Hesaplama

Arayı fazla açmadan hemen ikinci makaleyi yazmak istedim. Üniversitede aldığım derste yaptığım “Sigaraya Son”  projesinde kullanıcı sigarayı bıraktığı tarihi girecekti ve program kullanıcının kaç gündür sigara içmediğini hesaplayacaktı. Aslında yapılması gereken bugünün tarihi ile kullanıcının girdiği tarihi çıkartmaktı fakat bu iş .Net’de olduğu kadar kolay değildi.

Bu fonksiyon, çağırıldığı tarihten kullanıcının girdiği tarihi çıkartıyor. Fonksiyonda önemli olan üç noktayı anlatmak istiyorum;

Mavi renkli kısım tarihin hangi format da olduğunu söylüyorsunuz. Tarihleri veri tabanında “string” olarak tutmam bana, farklı ülkelerin tarih/saat formatında kullanılabilmesi için kolaylık sağladı. Bazı ülkeler Ay-Gün-Yıl şeklinde kullanabilir fakat ben veri tabanına Gün-Ay-Yıl şeklinde yazdığım için ve bunu da SimpleDateFormat sınıfında belirttiğim için ekstra’dan bir işlem yapmama gerek kalmadı.

Tarihin farkını almak için .Net’de ki gibi DateTime türünden iki sınıfı çıkartmak yetmiyor. Öncelikle Date sınıfı türünden bir değişken tanımlıyorsunuz ve bu değişkenin “long” geri dönüş tipinde olan .getTime() fonksiyonunu çağırıp, çıkartma işlemini yapıyorsunuz. Elde ettiğiniz sonucu yine Date sınıfının yapıcı fonksiyonuna parametre olarak geçiyorsunuz. Artık elinizde iki tarihin farkını tutan bir nesneniz var.

Son olarak kırmızı kare içine aldığım kısım kaç gündür içilmediğini hesapladığım algoritma. Java’da iki tarih arasında ki farkı hesapladığınız da 1.Ocak.1970 tarihinin üzerine ekliyor. Örnek verecek olursak; iki tarih arasında ki fark 1 yıl 2 ay 3 gün ise fark sınıfı; 4 Mart 1971 tarihini tutacaktır. Bunun için doğru sonucu elde etmem için kırmızı kare içindeki ufak algoritmayı yazdım.

Projenizde tarih ile ilgili bir işlem yapıyorsanız bu kod parçacığı mutlaka işinize yarayacaktır. İyi çalışmalar…

2 Responses to Android – İki Tarih Arasındaki Farkı Hesaplama

    Bir cevap yazın

    Your email address will not be published. Please enter your name, email and a comment.