程式碼段——C#判斷時間是否在某個範圍

shanzm發表於2024-04-24

目錄
  • 1.使用DateTime.Compare()
  • 2.透過時間相減計算時間間隔,可以指定精確度

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;
        }

相關文章