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

摘要:
代码:publicList<DateTime>getMissDateData(){DateTime〔〕keys={DateTime.Now.AddDays(-5),DateTime.Now。AddDays(-3),DateTime.Now.Add Days(-1),};ListmissingDate=newList();对于(inti=0;i˂键。

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;
        }
欢迎大家吐槽。

免责声明:文章转载自《查找正序排列的List中缺失的日期数据的一个算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python操作Excel读写--使用xlrdUnity3d 脚本与C#Socket服务器传输数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

七大查找算法

顺序查找 二分查找 插值查找 斐波那契查找 树表查找 分块查找 哈希查找 查找是在大量的信息中寻找一个特定的信息元素。在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 查找算法分类: 1)静态查找和动态查找: 注:静态或者动态都是针对查找表而言的...

Redis分布式锁,看完不懂你打我

简易的redis分布式锁 加锁: set key my_random_value NX PX 30000 这个命令比setnx好,因为可以同时设置过期时间。不设置过期时间,应用挂了,解不了锁,就一直锁住了。 解锁: if redis.call("get",KEYS[1])==ARGV[1] then return redis.call("del",K...

Selenium切换窗口,警告框处理,调用JavaScript代码

多窗口切换 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。 WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换。 以百度首页和百度注册页为例,在两个窗口之间的切换如下图。 from selenium import webdriver import time dr...

GPG(pgp)加解密

一、介绍 我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web、Email等一般都只提供明文传输方式(用https、smtps等例外)。所以,当我们需要传输重要文件时,应该对当中的信息加密。非对称密码系统是其中一种常见的加密手段。而在基于PGP方式加密的中文介绍少之又少,所以萌生了写一个完整教程的想法,当然本文部分资料是我搜遍网络整理出来的,并...

服务发现系统etcd介绍

一、概述 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统...

ssh配置无密码登录

1.在master机器上生成公钥: [root@master ~]# ssh-keygen -t rsa    注:一直按enter键就可以生成了 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Created...