Ejemplo n.º 1
0
 public static void Test()
 {
     Console.WriteLine("+++++++++++++++++PlanTimeTest+++++++++++++++++");
     PlanTime time = new PlanTime(2013, 11, 12, 4, 26, 12);
     {
         Console.WriteLine("-----------------OneOff-------------------");
         PlanTime time2 = PlanTime.Parse("2013-01-12 02:03:40");
         Console.WriteLine("String:{0}", time2.ToString());
         Console.WriteLine("ToDateTime:{0}", time2.ToDateTime());
         Console.WriteLine("GetNextTime:{0}", time2.GetNextTime());
     }
     {
         Console.WriteLine("-----------------Daily-------------------");
         PlanTime time2 = PlanTime.Parse("03:16:05");
         Console.WriteLine("String:{0}", time2.ToString());
         Console.WriteLine("ToDateTime:{0}", time2.ToDateTime());
         Console.WriteLine("GetNextTime:{0}", time2.GetNextTime());
     }
     {
         Console.WriteLine("-----------------Weekly-------------------");
         PlanTime time2 = PlanTime.Parse("23:58:05 Sunday");
         Console.WriteLine("String:{0}", time2.ToString());
         Console.WriteLine("ToDateTime:{0}", time2.ToDateTime());
         Console.WriteLine("GetNextTime:{0}", time2.GetNextTime());
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取下次触发事件的时间间隔
        /// </summary>
        /// <param name="needRepeat"></param>
        /// <returns>返回时间间隔</returns>
        private TimeSpan GetNextRaisePeriod(Boolean needRepeat)
        {
            TimeSpan ts = needRepeat ? RepeatInterval : (m_Time.GetNextTime() - DateTime.Now);

            //如果时间间隔过长则使用一个简短的时间来做校正
            if (ts > TimeSpan.FromDays(10))
            {
                return(TimeSpan.FromDays(1));
            }
            else if (ts < TimeSpan.FromMilliseconds(100))
            {
                return(TimeSpan.FromMilliseconds(100));
            }
            else
            {
                return(ts);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取下次触发事件的时间间隔
        /// </summary>
        /// <returns>返回时间间隔</returns>
        private TimeSpan GetNextRaisePeriod()
        {
            DateTime begin     = m_BeginTime.ToDateTime();
            DateTime beginNext = m_BeginTime.GetNextTime();
            DateTime end       = m_EndTime.ToDateTime();
            DateTime endNext   = m_EndTime.GetNextTime();
            DateTime now       = DateTime.Now;
            TimeSpan result;

            if (m_Begun == false)
            {
                //此次的时间段已过期,需要使用下次的时间段
                if (now > end)
                {
                    //Console.WriteLine("Begun false, now > end. {0} > {1}", now, end);
                    result = beginNext - now;
                }
                //此次的时间段尚未抵达
                else if (now < begin)
                {
                    //Console.WriteLine("Begun false, now < begin. {0} < {1}", now, begin);
                    result = begin - now;
                }
                //在时间段内
                else
                {
                    //Console.WriteLine("Begun false, in range. {0} in {1}/{2}", now, begin, end);
                    result = TimeSpan.FromMilliseconds(100);//立即触发
                }
            }
            else
            {
                //已结束
                if (now >= end)
                {
                    //Console.WriteLine("Begun true, now >= end. {0} >= {1}", now, end);
                    result = TimeSpan.FromMilliseconds(100);//立即触发
                }
                //尚未开始,但是标志位已不正确
                else if (now < begin)
                {
                    //开始重置标记为
                    //Console.WriteLine("PlanPeriod begun flag error, reset flag now.");
                    m_Begun = false;
                    result  = begin - now;
                }
                //在时间段内
                else
                {
                    //Console.WriteLine("Begun true, in range. {0} in {1}/{2}", now, begin, end);
                    result = end - now;
                }
            }
            //如果时间间隔过长则使用一个简短的时间来做校正
            if (result > TimeSpan.FromDays(10))
            {
                return(TimeSpan.FromDays(1));
            }
            else if (result < TimeSpan.FromMilliseconds(100))
            {
                return(TimeSpan.FromMilliseconds(100));
            }
            else
            {
                return(result);
            }
        }