所以我试图将这个Excel单元格计算转换为C#,但我无法理解它正在做什么.我阅读了这个EDATE定义,但它仍然没有多大意义.
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
Run Code Online (Sandbox Code Playgroud)
它基本上试图计算一年的一小部分.应该很容易做到,但我不完全确定这EDATE件事是做什么的.
根据EDATE,你主要是在处理12 months before the End Date (B25).
鉴于此,这似乎说:
如果开始日期在结束日期之前超过12个月,则:
(开始日期在结束日期之前一年之前的时间除以一年)+ 1
其他:
开始日期在结束日期之前的时间量除以一年.
我真的不知道Excel如何处理日期算术或这个函数的重点是什么,但这是我的伪一目了然.
真的,它只是检查if我提到的条件,然后如果条件为真,则将整个算术偏移一年.
编辑
好吧,一些快速的研究表明,Excel确实将日期算术视为几天,然后是12/1/1900 - 1/1/1900 = 335几天.在任何一个日期上花时间使它成为一天的一小部分.
鉴于此,此Excel公式似乎试图计算两个日期之间的年份差异.
这是一段应该提供它的粗略代码:
TimeSpan span = endDate.Subtract(startDate);
double years = span.Days / 365.25;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |