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

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

查找正序排列的List中缺失的日期数据的一个算法的更多相关文章

  1. oracle 中从一个历史表中查询最新日期数据插入到另一个表中语句

    先从历史表中查询最新的一个语句: select t.id from ( select r.*, row_number() over(partition by r.分组字段 order by r.排序时 ...

  2. 洛谷 P1030 求先序排列 Label:None

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  3. C#数组的排序(正序逆序)

    C#数组的排序(正序逆序) 这种排序 超级简单的 ! using System; using System.Collections.Generic; using System.Linq; using ...

  4. 《剑指offer》第五十三题(0到n-1中缺失的数字)

    // 面试题53(二):0到n-1中缺失的数字 // 题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字 // 都在范围0到n-1之内.在范围0到n-1的n个数字中有且只有一个数 ...

  5. indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找

    indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1. let a = [2, 9, 7, 8, 9]; a.indexOf(2); // 0 a.indexOf ...

  6. 转<<C#集合Dictionary中按值的降序排列

    转载地址:http://blog.sina.com.cn/s/blog_5c5bc9070100pped.html C#集合Dictionary中按值的降序排列 static void Main(st ...

  7. 给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

    """ #给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 #返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况) 解题思路: 1.设定一个 ...

  8. SQL-27 给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。 提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)

    题目描述 给出每个员工每年薪水涨幅超过5000的员工编号emp_no.薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列. 提示:在s ...

  9. SQL-15 查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列

    题目描述 查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列CREATE TABLE `employees` (`emp_no ...

随机推荐

  1. 【07】循序渐进学 docker:数据持久化

    写在前面的话 学到这里相信有心的朋友都发现问题了,我们每次都会去删掉容器,在创建新的容器.那数据怎么办?岂不删库跑路了? 就算不是数据库,假设公司有日志保留的需求,那每一次发布岂不日志都被干掉了? D ...

  2. nginx处理高并发请求强于apache

    ginx 不同于 Apache2 的一点就是,Nginx 采用单线程,非阻塞,异步 IO 的工作模型. Apache2 对于每一个请求,都会创建一个新进程或线程,会浪费很多内存和 CPU 时间,而 N ...

  3. Redis + Redis-sentinel + keepalived部署过程

    1   Redis缓存服务 Redis是一个key-value存储系统.与memcached一样,为了保证效率,数据都是缓存在内存中的.区别的是redis支持周期性的把更新的数据写入磁盘或者把修改操作 ...

  4. Heap堆

    #pragma once#include<iostream>using namespace std;#include<vector> template<class T&g ...

  5. [ 转 ] 为 phpstorm 自定义默认 Web 服务器

    phpstorm自带web 服务器,可以直接执行调试,这个之前的文章专门讲过,可以看下. 同时你也可以选择在phpstorm集成apache服务器,下面是我自己的亲测的步骤. 如何修改apache默认 ...

  6. 4,临界区 之 synchronized

    前提背景:多个并发线程共享同一个资源时,为防止这些共享资源可能出现的错误或数据不一致问题,提出了临界区的概念 临界区: 指一个用以访问共享资源的代码块,这个代码块在同一时间内只能允许一个线程访问 实现 ...

  7. java内存模型(jMM)(二)

    volatile关键字 volatile是一个类型修饰符(type specifier),就像大家更熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量.volatile的作用是作为指令 ...

  8. iOS开发之动画中的时间(概况)

    一.引言 在iOS开发中使用动画时,可以通过设置动画的duration.speed.begintime.offset属性,来设置动画的时长.速度.起始时间及起始偏移. 用一个简单的例子来说明各个参数的 ...

  9. php sapi 产生core 文件

    php sapi 产生core 文件 1) vim /usr/local/php7.1.6-debug/etc/php-fpm.conf rlimit_core = 0 改为 rlimit_core ...

  10. spider_keeper定时任务

    # Define apscheduler app 下的 __init__.py 文件中, 三个主要函数