2016-12-21 3 views
-2

に時間を取得:2 years 3 months2011-07-052013-10-05私は2つの日付の期間を持っている年と月

どのように私はフォーマットの時間を得ることができます。最善のアプローチは何ですか? 拡張メソッドまたはそのための新しいクラスを作成できますか?提案してください?すべてのヘルプは、私がこれまで行ってきた

を理解されるであろう:あなたは、アクション hereで見ることができます

public static string GetDuration(DateTime date1, DateTime date2) { 
    int oldMonth = date2.Month; 
    while (oldMonth == date2.Month) { 
     date1 = date1.AddDays(-1); 
     date2 = date2.AddDays(-1); 
    } 

    int years = 0, months = 0; 

    // getting number of years 
    while (date2.CompareTo(date1) >= 0) { 
     years++; 
     date2 = date2.AddYears(-1); 
    } 
    date2 = date2.AddYears(1); 
    years--; 

    // getting number of months and days 
    oldMonth = date2.Month; 
    while (date2.CompareTo(date1) >= 0) { 
     date2 = date2.AddDays(-1); 
     if ((date2.CompareTo(date1) >= 0) && (oldMonth != date2.Month)) { 
      months++; 
      oldMonth = date2.Month; 
     } 
    } 

    return 
     "Difference: " + 
     years.ToString() + " years" + 
     ", " + months.ToString() + " months"; 
} 
+0

'VAR期間は=(日付1 - 日付2)です.ToString( "YYYY MM")' –

+1

おかげではなく、 '上のエラーがあるが、 ToString() ' – AntonioDarr

+0

メソッド 'ToString'のオーバーロードが1つの引数を取る – AntonioDarr

答えて

1
public static string GetDuration(DateTime date1, DateTime date2) 
{ 
    TimeSpan difference = date2 - date1; 
    DateTime result = DateTime.MinValue.AddDays(difference.TotalDays); 

    int years = result.Year - 1; 
    int months = result.Month - 1; 
    int days = result.Day - 1; 

    return $"{years} years {months} months"; 
} 
+0

ありがとう – AntonioDarr

0
public static string GetDuration(DateTime date1, DateTime date2) 
{  
    var period = date2.AddDays(1) - date1; 
    var date = new DateTime(period.Ticks); 
    var totalYears = date.Year - 1; 
    var totalMonths = ((date.Year - 1) * 12) + date.Month - 1; 
    var extraMonths = totalMonths - (totalYears * 12); 

    return string.Format("{0} years {1} months", totalYears, extraMonths); 
} 

0

実際の日付についてはあまり考えず、ここで迅速な解決

int year, month; 

if(date2.Month >= date1.Month) 
{ 
    years = date2.Year - date1.Year; 
    months = date2.Month - date1.Month; 
} 
else 
{ 
    years = date2.Year - date1.Year - 1; 
    months= date2.Month + 12 - date1.Month; 
} 
関連する問題