今天小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);
本文发布于:2024-01-29 12:17:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170650187215229.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |