none
一个时间算法问题 RRS feed

  • 常规讨论

  • 问题描述:我有两个时间,开始时间是2009年1月1日 13:30:30,结束时间是2009年1月20日20:30:30。要把这个时间段的星期六星期天去掉,怎么实现?(注明:只在C#里实现,不在数据库)。请各位指点指点我。谢谢先。


    zy
    2009年5月22日 12:49

全部回复

  •     protected void Button2_Click(object sender, EventArgs e)
        {
            Dictionary<DateTime, bool> fDateList = new Dictionary<DateTime, bool>();
            
            DateTime fCurDate = new DateTime(2009, 1, 1, 13, 30, 30);
            DateTime fMaxDate = new DateTime(2009, 1, 20, 20, 30, 30);
    
            while (fCurDate <= fMaxDate)
            {
                fDateList.Add(fCurDate, (int)fCurDate.DayOfWeek != 0 && (int)fCurDate.DayOfWeek != 6);
                fCurDate = fCurDate.AddDays(1);
            }
    
            foreach (KeyValuePair<DateTime, bool> fPair in fDateList)
            {
                Response.Write(string.Format("日期:{0}({1}), 状态:{2} <br />", fPair.Key, fPair.Key.DayOfWeek, fPair.Value));
            }
        }

    知识改变命运,奋斗成就人生!
    2009年5月22日 13:22
    版主
  • 谢谢X.X.Y的指点。我在您的代码上做了些改动。功能实现了。代码如下:
    TimeSpan ts = endTime - receiveTime;

            while(receiveTime <= endTime)
            {
                if(receiveTime.DayOfWeek == DayOfWeek.Saturday || receiveTime.DayOfWeek == DayOfWeek.Sunday)
                {
                    days += 1;
                    receiveTime = receiveTime.AddDays(1);
                }
                else
                {
                    receiveTime = receiveTime.AddDays(1);
                }
            }

            if(ts.Days > 1)
            {
                ts = ts.Subtract(new TimeSpan(days, 0, 0, 0));
            }


    zy
    2009年5月22日 14:13
  • 星期六星期天每7天才有一次,你可以计算出第一个星期六星期天,然后直接按7的倍数计算
    【孟子E章】
    2009年5月22日 14:27
    版主