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

简介: Code: public List getMissDateData() { DateTime[] keys = { DateTime.Now.

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;
        }
欢迎大家吐槽。
相关文章
|
1天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
【5月更文挑战第14天】【机器学习】聚类算法中,如何判断数据是否被“充分”地聚类,以便算法产生有意义的结果?
|
1天前
|
机器学习/深度学习 运维 算法
【机器学习】可以利用K-means算法找到数据中的离群值吗?
【5月更文挑战第14天】【机器学习】可以利用K-means算法找到数据中的离群值吗?
|
2天前
|
存储 监控 NoSQL
Redis处理大量数据主要依赖于其内存存储结构、高效的数据结构和算法,以及一系列的优化策略
【5月更文挑战第15天】Redis处理大量数据依赖内存存储、高效数据结构和优化策略。选择合适的数据结构、利用批量操作减少网络开销、控制批量大小、使用Redis Cluster进行分布式存储、优化内存使用及监控调优是关键。通过这些方法,Redis能有效处理大量数据并保持高性能。
19 0
|
2天前
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?
|
2天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
2天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
|
2天前
|
机器学习/深度学习 自然语言处理 算法
【大模型】关于减轻 LLM 训练数据和算法中偏差的研究
【5月更文挑战第6天】【大模型】关于减轻 LLM 训练数据和算法中偏差的研究
|
2天前
|
机器学习/深度学习 数据采集 SQL
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
|
2天前
|
算法 数据可视化 数据挖掘
数据分享|R语言改进的K-MEANS(K-均值)聚类算法分析股票盈利能力和可视化
数据分享|R语言改进的K-MEANS(K-均值)聚类算法分析股票盈利能力和可视化
|
2天前
|
数据采集 存储 算法
数据分享|Weka数据挖掘Apriori关联规则算法分析用户网购数据
数据分享|Weka数据挖掘Apriori关联规则算法分析用户网购数据