Excelfunction到C#代码

所以我试图把这个Excel单元格计算转换成C#,但我真的不明白它在做什么。 我EDATE阅读了EDATE定义,但仍然没有多less意义。

 IF(EDATE(B25,-12)>A25,((EDATE(B25,-12)-A25)/(EDATE(B25,-12)-EDATE(EDATE(B25,-12),-12)))+1,(B25-A25)/(B25-EDATE(B25,-12))) B25 = End Date A25 = Start Date 

它本质上是要计算一年的一小部分。 应该很容易做,但我不完全确定这个EDATE东西。

根据EDATE ,你大多12 months before the End Date (B25)

鉴于此,这似乎是说:

如果开始date比结束date早12个月以上,那么:

(开始date早于结束date前一年的时间除以一年)+ 1

其他:

开始date在结束date之前的时间量除以一年。

真的不知道Excel是如何处理date算术的,或者这个函数是什么点的,但是这是我的一目了然。

真的,这只是检查我提到的条件, if条件成立,则将整个算术抵消一年。


编辑

好吧,一些快速的研究表明,Excel的date算术纯粹是数天,那么12/1/1900 - 1/1/1900 = 335天。 在任一date放一段时间,这是一天的一小部分。

鉴于此,此Excel公式似乎试图计算这两个date之间的分数年差异。

这是应该提供的一段粗略的代码:

 TimeSpan span = endDate.Subtract(startDate); double years = span.Days / 365.25;