一个实际的问题,有以下几个时间区间:
0:00 ~ 3:00
3:00 ~ 4:30
4:30 ~ 7:00
7:30 ~ 11:00
11:00 ~ 13:00
13:00 ~ 14:00
14:00 ~ 15:00
15:00 ~ 18:00
18:30 ~ 23:00
23:00 ~ 24:00
找出时间 2009-02-03 14:23:00所属的区间段,对照一下不难发现答案应该为【14:00 ~ 15:00】。
c#如何实现这一算法呢?
List<string> mylist =new List<string> ();
mylist.Add("0:00");
mylist.Add("3:00");
mylist.Add("4:30");
mylist.Add("7:30");
mylist.Add("11:00");
mylist.Add("13:00");
mylist.Add("14:00");
mylist.Add("15:00");
mylist.Add("18:30");
mylist.Add("23:00");
DateTime nowTime = Convert.ToDateTime("2009-02-03 14:00:00");
MessageBox.Show(nowTime.ToString() + "出现在第" + (GetPoint(mylist, nowTime) + 1).ToString() + "个位置");
//被调用方法,返回出现的位置
public int GetPoint(List<string> mylist, DateTime dt)
{
int PointID = -1;
Int32 NewTime = Convert.ToInt32(dt.ToString("HHmm"));
Int32[] array = new Int32[mylist.Count];
for (int k = 0; k < mylist.Count; k++)
{
array[k] = Convert.ToInt32(mylist[k].ToString().Replace(":", ""));
}
Array.Sort(array);
for (int j = 0; j < array.Length - 1; j++)
{
if (NewTime >= Convert.ToInt32(array[j].ToString()) && NewTime < Convert.ToInt32(array[j + 1].ToString()))
{
PointID = j;
break;
}
}
return PointID;
}