SORU
6 EKİM 2009, Salı


iki tarih arasındaki ay farkı hesaplama

C#/.NET TimeSpan TotalDays, TotalMinutes vb. ama toplam ay için bir formül farkı anlayamıyorum. Ay ve artık yıl başına değişken gün üzerimden atmaya devam. Nasıl alabilirimTotalMonths?

EditÜzgün olmadığım için daha net: ben de bilmiyorum aslında bu TimeSpan ama düşündüm kullanarak TotalDays TotalMinutes iyi bir örnek için ne ifade arıyordum ... dışında çözmeye çalışıyorum Toplam Ay.

Örnek: Dec 25, 2009 - 6 Ekim 2009 = 2 TotalMonths. Nov 5 Ekim-6 ay 0 eşittir. Kasım 6, 1 ay. Dec 6, 2 ay

CEVAP
6 EKİM 2009, Salı


"Ay" değişken bir ölçü birimidir.* *8, çünkü bir yerden almak mümkün olmayacaktır Kendin hesaplamak gerekecek ve bu iş için ne kadar istediğini anlamak Zorundasınız.

Örneğin, July 5, 2009 August 4, 2009 gibi tarih bir ay veya sıfır ay fark verim gerekir? Eğer bir verim gerektiğini söylersen, ne July 31, 2009 August 1, 2009 hakkında o zaman?bubir ay mı? Sadece tarihler Month değerleri farkı mı, yoksa zaman gerçek bir yayılma daha fazla ilgilidir? Bu kuralları belirleyen mantık önemsiz değil, kendi belirlemek ve uygun algoritmayı uygulamak zorunda kalırsınız.

Eğer istediğin sadece bu ay tamamen göz ardı ederek bir fark ise tarihi değerleri o zaman bu kullanabilirsiniz:

public static int MonthDifference(this DateTime lValue, DateTime rValue)
{
    return (lValue.Month - rValue.Month)   12 * (lValue.Year - rValue.Year);
}

Bu göreceli bir fark varsa rValue lValue, sonra dönüş değeri büyükse negatif olacak, yani verdiğini unutmayın. Eğer mutlak bir fark istiyorsanız, bunu kullanabilirsiniz:

public static int MonthDifference(this DateTime lValue, DateTime rValue)
{
    return Math.Abs((lValue.Month - rValue.Month)   12 * (lValue.Year - rValue.Year));
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • colacas

    colacas

    29 EKİM 2006
  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • MisterBrightside

    MisterBright

    24 Mart 2006