获得加权平均日期值?

时间:2011-06-24 15:22:07

标签: c# datetime average

如果我在6/3/2011获得50%的权重,在2011年6月1日获得50%的权重,则加权平均值为6/2/2011。

现在,我似乎无法弄清楚如何使用不均匀的权重来做到这一点,因为它不像你可以将DateTime乘以一倍,并总结结果(或者你可以?)。

7 个答案:

答案 0 :(得分:2)

DateTime dateA = ...;
DateTime dateB = ...;
TimeSpan difference = dateA - dateB;
double units = difference.Ticks;
// Do your weighted logic here on 'units'.
DateTime average = dateA + new TimeSpan(units);

像上面这样的东西(你明白了 - 基本上需要将差异标准化为你可以使用的格式,即刻度等)。

答案 1 :(得分:0)

使用DateTime对象的长时间戳。

答案 2 :(得分:0)

您可以按天来找到两个日期(开始和结束)之间的差异。在difference_days上应用权重,并按startdate + weightedDays

获取最终输出日期

答案 3 :(得分:0)

您可以使用Ticks的{​​{1}}属性吗?类似的东西:

DateTime

答案 4 :(得分:0)

您不能将日期时间乘以一倍,但您可以在比例(1到100)上设置date1和date2的值,并找出中间值的位置。在50/50场景中,1对100最终达到50。

然后您必须计算该范围内的天数。然后,您可以乘以加权小数(以百分比表示)并将其转换为天数。然后将该天数添加到第一个值。

由于您可以将日期转换为数字,因此这提供了一些非常有趣的其他方法来实现此目的。 TimeSpan是将其设置为数字的一种方式。

答案 5 :(得分:0)

我认为加权平均公式为sumproduct (Weights*Dates)/sum(权重)

sumproduct表示所有因素的总和。因素是权重和date.ticks的倍增。如果权重之和= 1,那么只剩下分子。

答案 6 :(得分:-1)

我也有同样的问题,只有货币(现金流量)存在,这意味着存在复利/折现增长率/价值衰减(称为货币时间价值)...

为了让您避免该错误,我编写了一个电子表格,该电子表格位于: https://1drv.ms/x/s!AqGuYeJW3VHggc9ARWCxcHIeodd2Pg

您只需要尝试一下!!……并了解到,利率为0%时,结果与其他文章中所述的加权平均值相同,但随着利率的增加,就会出现偏差。然后,您必须为您的编程语言构建XNPV函数,并将其与您的应用程序融合。

也有很多代数书增长的例子。也许与它们有交集,并且在现金流量中发现日期时间偏移