C# ile iki tarih arasındaki yıl, ay ve gün farkını bulmak için de yine TimeSpan sınıfını kullanabilirsiniz. Aşağıdaki örnek kod, iki tarih arasındaki farkı yıl, ay ve gün olarak bulmanıza yardımcı olacaktır.
Örneğimizde formumuza 2 adet dateTimePicker ve 1 adet Button ekliyoruz.
C# Kodları:
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 | private void btnCalculate_Click(object sender, EventArgs e) { DateTime startDate = dateTimePickerStartDate.Value; DateTime endDate = dateTimePickerEndDate.Value; int years = endDate.Year - startDate.Year; int months = endDate.Month - startDate.Month; int days = endDate.Day - startDate.Day; if (days < 0) { months--; days += DateTime.DaysInMonth(startDate.Year, startDate.Month); } if (months < 0) { years--; months += 12; } MessageBox.Show(String.Format("Fark: {0} yıl, {1} ay, {2} gün", years, months, days)); } |
Yukarıdaki kodda, yine dateTimePickerStartDate
ve dateTimePickerEndDate
adlı iki tarih seçici kontrolü kullanarak başlangıç ve bitiş tarihlerini alıyoruz. Daha sonra, yıl, ay ve gün farkını hesaplamak için sırasıyla endDate.Year - startDate.Year
, endDate.Month - startDate.Month
ve endDate.Day - startDate.Day
işlemlerini yapıyoruz.
Ancak, burada dikkat etmemiz gereken birkaç nokta var. Örneğin, ay farkını hesaplarken, ayın son günü ile başlangıç tarihindeki ay arasındaki farkı doğru hesaplamak için gün sayısını da hesaba katmamız gerekiyor. Bunun için, days
değişkeninin 0’dan küçük olması durumunda ay farkını bir azaltıyoruz ve days
değişkenine, başlangıç tarihindeki ayın gün sayısını ekliyoruz.
Benzer şekilde, yıl farkını hesaplarken de, ay farkı negatif olduğunda yıl farkını bir azaltıyoruz ve ay farkını 12’ye ekliyoruz.
Son olarak, MessageBox
ile kullanıcıya yıl, ay ve gün farkını gösteriyoruz.
Bu şekilde, iki tarih arasındaki farkı yıl, ay ve gün olarak doğru bir şekilde hesaplayabilirsiniz.