Browse Source

判断时间是否在区间内

懒得勤快 5 years ago
parent
commit
a0edad512a
1 changed files with 46 additions and 0 deletions
  1. 46 0
      Masuit.Tools.Abstractions/DateTimeExt/DateUtil.cs

+ 46 - 0
Masuit.Tools.Abstractions/DateTimeExt/DateUtil.cs

@@ -224,5 +224,51 @@ namespace Masuit.Tools.DateTimeExt
             DateTime.TryParse(strDate, out var result);
             return result.CompareTo(DateTime.Parse("1800-1-1")) > 0;
         }
+
+        /// <summary>
+        /// 判断时间是否在区间内
+        /// </summary>
+        /// <param name="this"></param>
+        /// <param name="start">开始</param>
+        /// <param name="end">结束</param>
+        /// <param name="mode">模式</param>
+        /// <returns></returns>
+        public static bool In(this DateTime @this, DateTime start, DateTime end, RangeMode mode = RangeMode.Close)
+        {
+            return mode switch
+            {
+                RangeMode.Open => start < @this && end > @this,
+                RangeMode.Close => start <= @this && end >= @this,
+                RangeMode.OpenClose => start < @this && end >= @this,
+                RangeMode.CloseOpen => start <= @this && end > @this,
+                _ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null)
+            };
+        }
+    }
+
+    /// <summary>
+    /// 区间模式
+    /// </summary>
+    public enum RangeMode
+    {
+        /// <summary>
+        /// 开区间
+        /// </summary>
+        Open,
+
+        /// <summary>
+        /// 闭区间
+        /// </summary>
+        Close,
+
+        /// <summary>
+        /// 左开右闭区间
+        /// </summary>
+        OpenClose,
+
+        /// <summary>
+        /// 左闭右开区间
+        /// </summary>
+        CloseOpen
     }
 }