找出时间所属的区间段

来源:互联网 发布:linux拷贝文件 编辑:程序博客网 时间:2024/05/06 17:55

一个实际的问题,有以下几个时间区间:

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

原创粉丝点击