求输入一个日期如2009-04-23得到该日期是本年第几周? 
要求:要用后台代码实现,不是用JS来实现,JS的有了,要后台代码来实现,谁有代码贴一下,谢谢了我在后台代码FOR循环中调用前台JS,我在后台是用这个调用前台JS的.为什么只有当FOR循环全部完了才会执行JS,不能循环一次就执行一次了??如果可以就不需要用后台代码为求周了???//
ClientScript.RegisterStartupScript(this.GetType(), "go", "<script>GetMonthWeek(" + day + ") </script>")

解决方案 »

  1.   


    //本周是本年第几周
    private int DatePart(System.DateTime dt)
    {
       int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几
       int daydiff = (-1) * (weeknow+1);//今日与上周末的天数差
       int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天
       int weeks = days/7;
       if(days%7 != 0)
    {
        weeks++;
       }
       //此时,weeks为上周是本年的第几周
       return (weeks+1);
      } 
    //本周起止日期 private string WeekRange(System.DateTime dt)
    {
       int weeknow = Convert.ToInt32(dt.DayOfWeek);
       int daydiff = (-1) * weeknow;
       int dayadd = 6-weeknow;
       string dateBegin = System.DateTime.Now.AddDays(daydiff).Date.ToString("MM月dd日");
       string dateEnd = System.DateTime.Now.AddDays(dayadd).Date.ToString("MM月dd日");
       return dateBegin + " - " +dateEnd;
      }//计算第几周(重新修改后)
    public int GetWeekOfCurrDate(DateTime dt)
            {
                int Week = 1;
                int nYear = dt.Year;
                System.DateTime FirstDayInYear = new DateTime(nYear, 1, 1);
                System.DateTime LastDayInYear = new DateTime(nYear, 12, 31);
                int DaysOfYear = Convert.ToInt32(LastDayInYear.DayOfYear);
                int WeekNow = Convert.ToInt32(FirstDayInYear.DayOfWeek) - 1;
                if (WeekNow < 0) WeekNow = 6;
                int DayAdd = 6 - WeekNow;
                System.DateTime BeginDayOfWeek = new DateTime(nYear, 1, 1);
                System.DateTime EndDayOfWeek = BeginDayOfWeek.AddDays(DayAdd);
                Week = 2;
                for (int i = DayAdd + 1; i <= DaysOfYear; i++)
                {
                    BeginDayOfWeek = FirstDayInYear.AddDays(i);
                    if (i + 6 > DaysOfYear)
                    {
                        EndDayOfWeek = BeginDayOfWeek.AddDays(DaysOfYear - i - 1);
                    }
                    else
                    {
                        EndDayOfWeek = BeginDayOfWeek.AddDays(6);
                    }                if (dt.Month == EndDayOfWeek.Month && dt.Day <= EndDayOfWeek.Day)
                    {
                        break;
                    }
                    Week++;
                    i = i + 6;
                }
                return Week;
            }
      

  2.   


    datepart(week,getdate())只是取得是本年的第几周,如果是本月的第几周,用:   
        
      select   datepart(week,getdate())-datepart(week,getdate()-day(getdate()))+1   
        
      

  3.   

    SELECT datepart(week,getdate()) FROM TABLE 
      

  4.   

    正解
    datepart(week,getdate())只是取得是本年的第几周,如果是本月的第几周,用:   
        
      select   datepart(week,getdate())-datepart(week,getdate()-day(getdate()))+1   
        
    UP
      

  5.   

    --时间日期函数
    6.DateADD()
    作用:可以计算出为某一日期时间值加上特定的时间区间后,所得的日期
    时间是什么
    语法:DateADD(detepart,number,date)
    返回值:日期参数 datepart的取值:
    1.year(yy) 年份
    2.quarter(qq) 第几季度
    3.month(mm) 月份
    4.dayofyear(dy) 此日期是本年中的第几天
    5.day(dd) 日数
    6.week(wk) 此日期是本年的第几周
    7.weekday(dw) 此日期是本周的第几天(1.星期天..7:星期六)
    8.hour(hh) 小时
    9.minute(mi) 分钟
    10.second(ss) 秒
    11millisecond(ms) 毫秒eg:
    print dateadd(yy,10,'2007-1-2')
    print dateadd(dd,10,'2007-1-2')print dateadd(dd,100,getdate())7.DateDiff()
    作用:能够计算出两个日期时间表达式这之间的差距
    语法:datediff(datepart,startdate,enddate)
    返回值:整形eg:
    select datediff(mm,'1991-12-1','2001-1-1')select datediff(yy,'1996-1-1',getdate())三、数学函数
    3.1 ABS():返回表达式的绝对值
    eg:ABS(-1)
    3.2: EXP():返回e的N次方值
    eg:EXP(2)
    3.3 PI()
    3.4:POWER()
    3.5:RAND():返回一个0-1之间的随机数值
    3.6:SQRT():开根号四.数据类型转换函数declare @age int
    set @age=18
    print '小明的年龄为:'[email protected]:CAST()
    语法:CAST(expression as data_type)eg:
    declare @age int
    set @age=18
    print '小明的年龄为:'+cast(@age as varchar(10))declare @num1 varchar(2)
    declare @num2 varchar(2)
    declare @num3 varchar(4)
    set @num1='12'
    set @num2='10'
    set @num3=cast(cast(@num1 as int)+cast(@num2 as int) as varchar(4))
    print @num34.2:Convert
    语法:Convert(data_type,expression)eg:
    declare @num1 int
    declare @num2 int
    declare @num3 varchar(4)
    set @num1=10
    set @num2=15
    set @num3=convert(varchar(2),@num1)+convert(varchar(2),@num2)
    print @num3--SQLSERVER中的全局函数
    1.@@CONNECTION :返回SQLSERVER启动后,连接或者尝试连结的次数
    2.@@CUP_BUSY:返回SQLSERVER最近一次启动之后,CPU的工作时间(单位:
        毫秒)
    3.@@ERROR:返回最近一次执行错误的T-SQL语句的错误代码
    4.@@IDENTITY:返回最近一次增加的自增长编号
    5.@@ROWCOUNT: 返回最近一次执行的语句影响了多少条数据记录二、Tran-SQL的语句
    1.控制流语言
    declare @num1 int
    set @num1=5
    if (@num1>1)
         print '@num1大于1'
    else
         print '@num1小于1'
    2.begin..end
    declare @num1 int
    set @num1=5
    if (@num1>1 and @num<10)
    begin
        print 'aaa'
    end else
    begin
         print 'ccc'
         print 'ddd'
    end2.While循环语句
    语法:
    while bool_expression
    {sql_statement}
    [break]
    {sql_statement}
    [continue]while a>b
    beginendeg:
    declare @num int
    declare @sum int
    set @num=0
    set @sum=0
    while @num<=100
    begin
        set @sum=@sum+@num
        set @num=@num+1
        if (@num=100) 
          break
        else
          continue
    end
    print @sum