zoukankan      html  css  js  c++  java
  • 检测是一个时间串或一个数字串是否连续

     private static int Getcount(bool distinct, DateTime[] timeList, DateTime end, TimeSpan ts)
            {
                var datemark = end;
                int count = 0;
                for (int i = 0; i < timeList.Length; i++)
                {
                    var curdate = timeList[i];
    
                    if (curdate > end)
                    {
                        //在范围外
                        continue;
                    }
    
                    if (i == 0)
                    {
                        if (curdate < end.Subtract(ts))
                            return 0;
                    }
                    if (curdate > datemark.Subtract(ts) && curdate <= datemark)
                    {
                        //如果取唯一值,这里只会执行一次
                        if (!distinct)
                            count++;
                        if (distinct && count == 0)
                        {
                            count = 1;
                        }
    
                        continue;
                    }
                    else if (curdate > datemark.Subtract(ts).Subtract(ts)
                             && curdate <= datemark.Subtract(ts))
                    {
                        //步进一刻度
                        datemark = datemark.Subtract(ts);
                        count++;
                        continue;
                    }
                    //能到这里已经连续
                    return count;
                }
    
                return count;
            }
    
    
    
    
            [TestMethod]
            public void MyTestMethod_Count()
            {
    
                var reader = new[]
                                 {
                                     DateTime.Parse("2012-1-6 1:0:0"),
                                     DateTime.Parse("2012-1-5 1:0:0"),
                                     DateTime.Parse("2012-1-4 1:0:0"),
                                        //DateTime.Parse("2012-1-4 2:0:0"),
                                     DateTime.Parse("2012-1-3 1:0:0"),
                                     //DateTime.Parse("2012-1-2 1:0:0"),
                                     DateTime.Parse("2012-1-1 1:0:0")
                                 };
    
                //Console.WriteLine(Getcount(true, reader));
    
                Assert.AreEqual(4, Getcount(false, reader));
            }
    
    
            [TestMethod]
            public void MyTestMethod_Distinct_Count()
            {
    
                var reader = new[]
                                 {
                                     DateTime.Parse("2012-1-6 1:0:0"),
                                     DateTime.Parse("2012-1-5 1:0:0"),
                                     DateTime.Parse("2012-1-4 1:0:0"),
                                      DateTime.Parse("2012-1-4 2:0:0"),
                                      DateTime.Parse("2012-1-4 2:0:0"),
                                        DateTime.Parse("2012-1-4 2:0:0"),
                                     DateTime.Parse("2012-1-3 1:0:0"),
                                     //DateTime.Parse("2012-1-2 1:0:0"),
                                     DateTime.Parse("2012-1-1 1:0:0")
                                 };
    
                //Console.WriteLine(Getcount(true, reader));
    
                Assert.AreEqual(4, Getcount(true, reader));
            }
    
    
    
            [TestMethod]
            public void MyTestMethod_distinct()
            {
                var reader = new[]
                                 {
                                      DateTime.Parse("2012-1-8 2:0:0"),
                                      DateTime.Parse("2012-1-7 2:0:0"),
                                      DateTime.Parse("2012-1-6 2:0:0"),
                                     DateTime.Parse("2012-1-6 1:0:0"),
                                     DateTime.Parse("2012-1-5 1:0:0"),
                                     DateTime.Parse("2012-1-4 1:0:0"),
                                     DateTime.Parse("2012-1-4 2:0:0"),
                                     DateTime.Parse("2012-1-3 1:0:0"),
                                     //DateTime.Parse("2012-1-2 1:0:0"),
                                     DateTime.Parse("2012-1-1 1:0:0")
                                 };
    
                Assert.AreEqual(4, Getcount(true, reader));
            }
    
            [TestMethod]
            public void MyTestMethod_0()
            {
                var reader = new DateTime[]
                                 {
                                     // DateTime.Parse("2012-1-6 2:0:0"),
                                     //DateTime.Parse("2012-1-6 1:0:0"),
                                     //DateTime.Parse("2012-1-5 1:0:0"),
                                     //DateTime.Parse("2012-1-4 1:0:0"),
                                     //DateTime.Parse("2012-1-4 2:0:0"),
                                     //DateTime.Parse("2012-1-3 1:0:0"),
                                     ////DateTime.Parse("2012-1-2 1:0:0"),
                                     //DateTime.Parse("2012-1-1 1:0:0")
                                 };
    
                Assert.AreEqual(0, Getcount(true, reader));
            }
    
    
    
    
            [TestMethod]
            public void MyTestMethod_all()
            {
                MyTestMethod_Count();
                MyTestMethod_distinct();
                MyTestMethod_0();
            }
    
    
    
    
            private static int Getcount(bool distinct, DateTime[] reader)
            {
                var seconds = 24 * 60 * 60;
                var end = DateTime.Parse("2012-1-7 0:0:0");
                TimeSpan ts = new TimeSpan(0, 0, seconds);
                return Getcount(distinct, reader, end, ts);
            }
  • 相关阅读:
    导航栏下拉至一定高度后固定在顶部的特效
    laravel表单中文错误提示本地化
    laravel模板使用
    网站测试用例
    sublime安装ctags用于追踪函数
    ecshop头部添加所在城市
    php 常用的redis操作语法
    mysql where与 having的区别
    mysql 列类型以及属性特点
    不错的博客链接
  • 原文地址:https://www.cnblogs.com/zbw911/p/3105563.html
Copyright © 2011-2022 走看看