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

今天小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);


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值