一尘不染

两个日期之间月份的差异

c#

如何计算C#中两个日期之间的月份差异?

DateDiff()C#中是否有等效于VB的方法。我需要找出相隔数年的两个日期之间的月份差异。文档说我可以这样使用TimeSpan

TimeSpan ts = date1 - date2;

但这给了我几天的数据。 我不想将这个数字除以30,
因为不是每个月都有30天,并且由于两个操作数值彼此相距甚远,所以我怕除以30可能会给我一个错误的值。

有什么建议么?


阅读 394

收藏
2020-05-19

共1个答案

一尘不染

假设月份中的一天是不相关的(即2011.1.1和2010.12.31之间的差异为1),则date1> date2给出正值,而date2>
date1给出负值。

((date1.Year - date2.Year) * 12) + date1.Month - date2.Month

或者,假设您希望在两个日期之间获得大约“平均月”数,则以下内容应适用于所有日期差异,但差异非常大。

date1.Subtract(date2).Days / (365.25 / 12)

注意,如果要使用后一种解决方案,则单元测试应说明应用程序设计用于的最宽日期范围,并相应地验证计算结果。


更新(感谢 Gary

如果使用“平均月份”方法,则“每年平均天数”所用的精确度稍高一些是365.2425

2020-05-19