我想做个日程安排系统,有日计划、周计划、月计划,年计划,都是根据选定的这天的日期,从数据库中取出这天所在的周、月、年的纪录。日、月、年都可以根据这天的日期去取(如日期为2006-04-19,取2006这一年的,04这个月的,19这日的)但是这周我就不太清楚应该怎样个取法了,各位大哥可以帮帮忙吗?

解决方案 »

  1.   

    private Week GetWeek(DateTime dateTime)
    {
    Week week = new Week(); if( dateTime.AddDays((7 - (int)(dateTime.DayOfWeek))%7).Year > dateTime.Year )
    {
    week.Year = dateTime.Year + 1;
    week.WeekOfYear = 1;
    }
    else
    {
    DateTime firstDayOfYear = new DateTime(dateTime.Year,1,1);
    int dayOfYear = dateTime.DayOfYear + (int)(firstDayOfYear.DayOfWeek) -1; if( firstDayOfYear.DayOfWeek == DayOfWeek.Sunday )
    { dayOfYear += 7;
    } week.Year = dateTime.Year;
    week.WeekOfYear = Convert.ToInt16(dayOfYear/7.0 + 0.499);
    }
               

    return week;
    } struct Week
    {
    public int Year;
    public int WeekOfYear;
    }
      

  2.   

    推荐一个ASP.NET群,来共同学习20646750
      

  3.   

    用DayOfWeek()取得今天是星期几,
    然后用DateTime.Now.AddDays()来几计算周日和周日
    比如今天是周二,周一就等于DateTime.Now.AddDays(-1);
    周日等于DateTime.Now.AddDays(4);
      

  4.   

    /// <summary>
    /// 计算本周起始日期(礼拜一的日期)
    /// </summary>
    /// <param name="someDate">该周中任意一天</param>
    /// <returns>返回礼拜一日期,后面的具体时、分、秒和传入值相等</returns>
    public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
    {
        int i = someDate.DayOfWeek - DayOfWeek.Monday;
        if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
        TimeSpan ts = new TimeSpan(i, 0, 0, 0);
        return someDate.Subtract(ts);
    }/// <summary>
    /// 计算本周结束日期(礼拜日的日期)
    /// </summary>
    /// <param name="someDate">该周中任意一天</param>
    /// <returns>返回礼拜日日期,后面的具体时、分、秒和传入值相等</returns>
    public static DateTime CalculateLastDateOfWeek(DateTime someDate)
    {
        int i = someDate.DayOfWeek - DayOfWeek.Sunday;
        if(i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。
        TimeSpan ts = new TimeSpan(i, 0, 0, 0);
        return someDate.Add(ts);
    }/// <summary>
    /// 判断选择的日期是否是本周(根据系统当前时间决定的‘本周’比较而言)
    /// </summary>
    /// <param name="someDate"></param>
    /// <returns></returns>
    public static bool IsThisWeek(DateTime someDate)
    {
        //得到someDate对应的周一
        DateTime someMon = CalculateFirstDateOfWeek(someDate);
        //得到本周一
        DateTime nowMon = CalculateFirstDateOfWeek(DateTime.Now);    TimeSpan ts = someMon - nowMon;
        if (ts.Days < 0)
            ts = -ts;//取正
        if (ts.Days >= 7)
        {
            return false;
        }
        else 
        {
            return true;
        }
    }==== 
    ~~~~ 我的Blog:http://blog.csdn.net/quou2002