1. ホーム
  2. c#

[解決済み] 2つの日付の間の月数の差

2022-03-14 12:29:50

質問

C#で2つの日付の月差を計算する方法は?

VB の DateDiff() メソッドを C# で使用することができます。年離れた2つの日付の間の月の差を求める必要があります。ドキュメントによると、私は TimeSpan のようなものです。

TimeSpan ts = date1 - date2;

が、これだとDaysでデータが表示される。 この数字を30で割りたくないんです。 なぜなら、すべての月が30日とは限らないし、2つのオペランドの値は互いにかなり離れているので、30で割ると間違った値が得られるかもしれないと思うからです。

何か提案はありますか?

解決方法は?

月日は関係ない(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 .