如果我在2011年6月3日擁有50%的權重和2011年6月1日的權重爲50%,那麼加權平均值將爲2011年6月2日。獲取加權平均日期值?
現在,我似乎無法弄清楚如何用不平衡的權重來做這件事,因爲它不像你可以乘以一個雙倍的DateTime,並且總結結果(或者你可以嗎?)。
如果我在2011年6月3日擁有50%的權重和2011年6月1日的權重爲50%,那麼加權平均值將爲2011年6月2日。獲取加權平均日期值?
現在,我似乎無法弄清楚如何用不平衡的權重來做這件事,因爲它不像你可以乘以一個雙倍的DateTime,並且總結結果(或者你可以嗎?)。
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);
喜歡的東西上面得到最終的輸出日期(你的想法 - 基本上需要規範的差別成可以處理的格式,即蜱,等。 )。
使用DateTime對象的較長時間戳。
您可以根據天數找到兩個日期(開始和結束)之間的差異。取適量塗抹於difference_days
的重量和startdate + weightedDays
您能否使用DateTime
的Ticks
屬性?喜歡的東西:
DateTime firstDate = new DateTime(2011, 6, 5);
DateTime secondDate = new DateTime(2011, 6, 1);
double weight1 = 0.4;
double weight2 = 0.6;
var averageTicks = (firstDate.Ticks * weight1) + (secondDate.Ticks * weight2)/2;
DateTime averageDate = new DateTime(Convert.ToInt64(averageTicks));
不能由雙乘以日期時間,但你可以在一個標度(1〜100)設置日期1和date2的值,並找出其中的價值,你將在中間。在50/50的情況下,1與100的比例爲50。
然後您必須計算範圍內的天數。然後,您可以乘以加權小數(以百分比表示)並將其轉換爲天數。然後將該天數添加到第一個值。
由於您可以將日期轉換爲數字,因此可以實現一些非常有趣的其他方法來完成此操作。 TimeSpan是一種將數字設置爲數字的方法。
我想的加權平均公式將SUMPRODUCT (Weights*Dates)/sum
(重量)
凡SUMPRODUCT裝置的所有因素的總和。因素是權重和date.ticks的乘積。如果權重總和= 1,則只有分子保留。
看起來像我的贏家,謝謝! – sooprise