C# で 2 つの日付間の月数の差を計算するにはどうすればよいでしょうか?
C# にはVB のメソッドに相当するものはありますかDateDiff()
。年が離れている 2 つの日付の月数の違いを調べる必要があります。ドキュメントには、次のように使用できると書かれていますTimeSpan
。
TimeSpan ts = date1 - date2;
しかし、これは日数でデータを返します。すべての月が 30 日であるとは限らず、2 つのオペランド値が互いにかなり離れているため、この数値を 30 で割ることはしたくありません。30 で割ると間違った値になる恐れがあります。
助言がありますか?
ベストアンサー1
月の日付は関係ないと仮定すると(つまり、2011.1.1と2010.12.31の差は1)、date1 > date2は正の値、date2 > date1は負の値になります。
((date1.Year - date2.Year) * 12) + date1.Month - date2.Month
または、2 つの日付間の「平均月数」のおおよその数が必要な場合、日付の差が非常に大きい場合を除き、次の式が機能します。
date1.Subtract(date2).Days / (365.25 / 12)
後者のソリューションを使用する場合は、ユニット テストで、アプリケーションが動作するように設計されている最も広い日付範囲を指定し、それに応じて計算結果を検証する必要があることに注意してください。
更新(感謝を込めて)ゲイリー)
「平均月数」法を使用する場合、「年間平均日数」に使用するより正確な数値は次のようになります。365.2425。