2012-01-19 8 views
1

2つの日付の正確な違いを文字列の形式で返す必要があります。DateDiffを使用せずに正確な日付の違いを返す

日付が01-FEB-201201-FEB-2014している場合、この関数は "2年" を返す必要があります。
日付が01-FEB-2012および01-MAR-2014の場合、関数は "25 months"を返します。
差異が正確な年または月でない場合は、日数の差を返す必要があります。

DateDiffをVisual Basic名前空間から使用しないように、コードはC#に移植可能です。

+1

C#コードで 'DateDiff'アセンブリをインポートするだけではどうですか?代わりに、 'DateTime.Subtract'を使用することもできます。 – keyboardP

答えて

3
'Assuming d1 < d2  
Public Function GetDateDiff(d1 as DateTime, d2 As DateTime) As String 

    If d1.Day = d2.Day Then 
     Dim yearDiff As Integer = d2.Year - d1.Year 
     If d1.Month = d2.Month Then 
      'Only year differs 
      Return yearDiff & " years" 
     Else 
      'Month and year differs 
      Dim monthDiff As Integer = d2.Month - d1.Month 
      Return (yearDiff * 12 + monthDiff) & " months" 
     End If 
    Else 
     Return (d2-d1).TotalDays & " days" 
    End If 
End Function 
関連する問題