C# 如何计算两个日期之间的月份差异?
有没有相当于VB的DateDiff()
C# 中的方法。我需要找出相隔数年的两个日期之间的月份差异。文档说我可以使用TimeSpan
like:
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 https://stackoverflow.com/users/393004/gary)
如果使用“平均月份”方法,“每年平均天数”的稍微准确的数字是365.2425 https://en.wikipedia.org/wiki/Year.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)