查找正序排列的List中缺失的日期数据的一个算法

Code:

        public List<DateTime> getMissDateData()
        {

            DateTime[] keys = { DateTime.Now.AddDays(-5), DateTime.Now.AddDays(-3), DateTime.Now.AddDays(-1), };
            List<DateTime> missingDate = new List<DateTime>();
            for (int i = 0; i < keys.Length; i++)
            {
                logger.Info("Orginal data:"+keys[i]);
            }

            if (keys.Length > 0)
            {
                DateTime firstDate = keys[0];
                if (firstDate.Day > 1)
                {
                    int missingDateInt = firstDate.Day - 1;
                    for (int i = missingDateInt; i > 0; i--)
                    {
                        missingDate.Add(firstDate.AddDays(-i));
                    }
                }
                int keysLength = (keys[keys.Length - 1] - keys[0]).Days;

                DateTime dtTemp = keys[0];
                // firstDate = keys[0];
                int count = keys.Length;
                for (int i = 0; i < count; i++)
                {
                    Console.WriteLine(dtTemp.ToString(keys[i].ToString("yyyy-MM-dd HH:mm:ss")));
                    while (DateTime.Compare(keys[i], dtTemp) != 0)
                    {
                        logger.InfoFormat("Actual Date:{0};  The date of the cumulative:{1}", keys[i].ToShortDateString(), dtTemp.ToShortDateString());
                        logger.InfoFormat("{0}", DateTime.Compare(keys[i], dtTemp));
                        //Console.WriteLine(String.Format("Actual Date:{0};  The date of the cumulative:{1}", keys[i].ToShortDateString(), dtTemp.ToShortDateString()));
                       // Console.WriteLine(String.Format("{0}", DateTime.Compare(keys[i], dtTemp)));
                        missingDate.Add(dtTemp);
                        dtTemp = dtTemp.AddDays(1);
                    }
                    dtTemp = dtTemp.AddDays(1);
                }
            }
            else
            {
                logger.InfoFormat("Has no new data:{0}", keys.Length);
               // Console.WriteLine(String.Format("Has no new data:{0}", keys.Length));
            }

            for (int i = 0; i < missingDate.Count; i++)
            {
                logger.Info("Missing data:" + missingDate[i].ToShortDateString());
                //Console.WriteLine("Missing data:" + missingDate[i].ToShortDateString());
            }
            return missingDate;
        }
欢迎大家吐槽。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值