如何用VB实现将一天任意分成3段,判断当前时间在哪一段时间里?
要求可以设置3段时间的起始点
如1班7:30-17:05
2班17:05-0:05
3班0:05-7:30
但是怎么判断当前时间是哪班的?特别是第二班的!
[解决办法]
Public Function VerifyDatetimeTurn(ByVal objDateTime As DateTime) As Integer Dim nextDay As DateTime = objDateTime.AddDays(1) Dim turn1time As DateTime = New DateTime(objDateTime.Year, objDateTime.Month, objDateTime.Day, 7, 0, 0) Dim turn2time As DateTime = New DateTime(objDateTime.Year, objDateTime.Month, objDateTime.Day, 17, 5, 0) Dim turn3time As DateTime = New DateTime(nextDay.Year, nextDay.Month, nextDay.Day, 0, 5, 0) If DateTime.Compare(objDateTime, turn1time) <= 0 Then Return 3 ElseIf DateTime.Compare(objDateTime, turn2time) <= 0 Then Return 1 ElseIf DateTime.Compare(objDateTime, turn3time) <= 0 Then Return 2 Else Return 3 End IfEnd Function
[解决办法]
给你写个随意设置n个时间段的demo:
using System;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var 时间段 = new TimeSpan[] { TimeSpan.Parse("07:30:0"), TimeSpan.Parse("17:05:0"), TimeSpan.Parse("0:05:00").Add(TimeSpan.FromHours(24)), TimeSpan.Parse("7:30:0").Add(TimeSpan.FromHours(24)) }; var 要判断的时间 = TimeSpan.Parse("18:10:00"); Console.WriteLine("在第{0}区间", 判断区间(时间段, 要判断的时间) + 1); Console.ReadKey(); } private static int 判断区间(TimeSpan[] 时间段, TimeSpan 要判断的时间) { if (要判断的时间 < 时间段[0]) 要判断的时间 = 要判断的时间.Add(TimeSpan.FromHours(24)); for (var i = 0; i < 时间段.Length - 1; i++) if (要判断的时间 >= 时间段[i] && 要判断的时间 <= 时间段[i + 1]) return i; return -1; } }}
[解决办法]
1. 对于所给出的24小时内时间段,假设一个时间比上一个时间段小(早),那么你就加上24小时时间。
2. 对于所要判断的时间,假设比时间段的第一个时间小(早),那么你就加上24小时时间。
3. 然后就可以直接遍历每一个区间来判断是否包含了。