判断时间是否在某个时间段内
1 using System;
2
3 namespace TimeEval
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Console.WriteLine("Hello World!");
10
11 Console.WriteLine("=======================");
12
13 bool oneRet = IsInTimeRange(DateTime.Now, "1:00", "8:00");
14 Console.WriteLine("后夜- - - -当前时间:{0},范围:1:00-8:00,结果:{1}", DateTime.Now, oneRet);
15
16 bool twoRet = IsInTimeRange(DateTime.Now, "8:00", "17:00");
17 Console.WriteLine("白班- - - -当前时间:{0},范围:8:00-17:00,结果:{1}", DateTime.Now, twoRet);
18
19 bool threeRet = IsInTimeRange(DateTime.Now, "17:00", "1:00");
20 Console.WriteLine("前夜- - - -当前时间:{0},范围:17:00-1:00,结果:{1}", DateTime.Now, threeRet);
21
22 Console.ReadKey();
23 }
24
25
26
27
28
29
30
31 public static bool IsInTimeRange(DateTime nowTime, string beginHm, string endHm)
32 {
33 DateTime start = DateTime.Parse(beginHm);
34 DateTime end = DateTime.Parse(endHm);
35 if (start.CompareTo(end) == 1 || start.Equals(end))
36 {
37 if (GetTimeSpan(nowTime.ToString()) >= GetTimeSpan(start.ToString()) || GetTimeSpan(nowTime.ToString()) <= GetTimeSpan(end.ToString()))
38 {
39 return true;
40 }
41 }
42 else
43 {
44 if (GetTimeSpan(nowTime.ToString()) >= GetTimeSpan(start.ToString()) && GetTimeSpan(nowTime.ToString()) <= GetTimeSpan(end.ToString()))
45 {
46 return true;
47 }
48 }
49 return false;
50 }
51
52
53
54
55
56
57 public static long GetTimeSpan(string time)
58 {
59 if (string.IsNullOrEmpty(time))
60 {
61 TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
62 return (long)ts.TotalMilliseconds;
63 }
64 else
65 {
66 DateTime dt = Convert.ToDateTime(time);
67 TimeSpan ts = dt.ToUniversalTime() - new DateTime(1970, 1, 1);
68 return (long)ts.TotalMilliseconds;
69 }
70 }
71 }
72 }