代码段——C#判断时间是否在某个范围

1.使用DateTime.Compare()

  • 注意:两个比较的时间,一定与相同的时间精度,比如都精确到分钟,或都精确到日
  • 注意:这里我判断指定时间是否在时间范围的闭区间里
        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
        {
            DateTime dt = Convert.ToDateTime(dateTime);
            DateTime dtStartTime = Convert.ToDateTime(startTime);
            DateTime dtEndTime = Convert.ToDateTime(endTime);
            int compNum1 = DateTime.Compare(dt, dtStartTime);
            int compNum2 = DateTime.Compare(dt, dtEndTime);

            return compNum1 >= 0 && compNum2 <= 0;
        }

2.通过时间相减计算时间间隔,可以指定精确度

  • 注意:这里我使用的TotalSeconds(),让比较时间精确到秒
  • 注意:这里我判断指定时间是否在时间范围的闭区间里
        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
        {
            DateTime dt = Convert.ToDateTime(dateTime);
            DateTime dtStartTime = Convert.ToDateTime(startTime);
            DateTime dtEndTime = Convert.ToDateTime(endTime);
            double ts1 = (dt - dtStartTime).TotalSeconds;
            double ts2 = (dt - dtEndTime).TotalSeconds;
            return ts1 >= 0 && ts2 <= 0;            
        }


        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,DateTime类型</param>
        /// <param name="startTime">开始时间,DateTime类型</param>
        /// <param name="endTime">结束时间,DateTime类型</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(DateTime dateTime, DateTime startTime,  DateTime endTime)
        {
            double ts1 = (dateTime - startTime).TotalSeconds;
            double ts2 = (dateTime - endTime).TotalSeconds;
            return ts1 >= 0 && ts2 <= 0;
        }


        /// <summary>
        /// 判断当前时间是否在指定的范围
        /// </summary>
        /// <param name="startTime">开始时间,DateTime类型</param>
        /// <param name="endTime">结束时间,DateTime类型</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(DateTime startTime, DateTime endTime)
        {
            DateTime dateTime = DateTime.Now;
            double ts1 = (dateTime - startTime).TotalSeconds;
            double ts2 = (dateTime - endTime).TotalSeconds;
            return ts1 >= 0 && ts2 <=0;
        }

posted @ 2024-04-24 10:20  shanzm  阅读(1141)  评论(0编辑  收藏  举报
TOP