如何计算C#中两个日期之间的月份差异?
DateDiff()C#中是否有等效于VB的方法。我需要找出相隔数年的两个日期之间的月份差异。文档说我可以这样使用TimeSpan:
DateDiff()
TimeSpan
TimeSpan ts = date1 - date2;
但这给了我几天的数据。 我不想将这个数字除以30, 因为不是每个月都有30天,并且由于两个操作数值彼此相距甚远,所以我怕除以30可能会给我一个错误的值。
有什么建议么?
假设月份中的一天是不相关的(即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。