C# 求平均上下班时间算法

来源:互联网 发布:好玩的手机网游知乎 编辑:程序博客网 时间:2024/04/28 03:29

今天小Z一兄弟在项目上遇到了一个求平均上下班时间的算法需求,他采用转换成时间戳tickets的算法进行计算,会出现溢出的异常。小Z考虑这个问题,提出取差值计算的算法。理论公式为:

平均上班时间 = (a1 + a2 + ..+ an)/ days

       = ((a1 - A)+(a2 - A)+...+(an - A)) / days+ A

这里A小Z就取当前时间,C#代码如下:

            DateTime time = DateTime.Now;            List<DateTime> dtList = new List<DateTime>();            dtList.Add(new DateTime(2017, 9, 25, 7, 31, 50));            dtList.Add(new DateTime(2017, 9, 25, 8, 30, 20));            dtList.Add(new DateTime(2017, 9, 25, 9, 05, 45));            dtList.Add(new DateTime(2017, 9, 25, 8, 55, 50));            dtList.Add(new DateTime(2017, 9, 25, 9, 27, 50));            dtList.Add(new DateTime(2017, 9, 25, 8, 53, 50));            dtList.Add(new DateTime(2017, 9, 25, 8, 49, 50));            dtList.Add(new DateTime(2017, 9, 25, 7, 59, 50));            var balanceMillSeconds = dtList.Sum(ent=>(ent - time).TotalMilliseconds);            var count = dtList.Count;            var avgDateTime = time.AddMilliseconds(balanceMillSeconds / count);            Console.WriteLine(avgDateTime);


验证了一下,应该可以满足需求,这样封装成一个函数投入使用。


原创粉丝点击