$year=2011;$week=35;//2011年中的第35周我现在想得到第35周中每天的日期,应该怎么得到啊,(一周,从周一开始)

解决方案 »

  1.   

    echo strftime('%Y-%m-%d',strtotime('+34 week',strtotime('2011-01-01')));
      

  2.   


    你看哈前辈,我就是想实现这么一个功能,当我选择不同的周,能显示出不同的日期来,可是现在遇到了下面的问题。当$week=34的时候,可以输出这样的效果
    08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五) 08/27(星期六) 可是当我传进来另一个$week值的时候(即$week=35)的时候,就变成了下面这样的
    08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五 
    应该是:(08/28(星期日) 08/29(星期一) 08/30(星期二) 08/31(星期三) 09/01(星期四) 08/02(星期五) 08/03(星期六) )当$week=36的时候,又变成了这样的
    08/19(星期五) 08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) ...下面依次类推[/color]        $week=34;//这个是从页面提交过来的周数,假定为当前的第34周
    $weekstart=strtotime("-$week days",time());
    $weekend=strtotime("+".(7-$week)." days",time());
    $weekstartday=date("d",$weekstart);
    $weekendday=date("d",$weekend);
    $re.="<table  width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
    $re.="<tr>";
    for ($i=$weekstartday;$i<$weekendday;$i++)
    {
              $weekday=date("w",mktime(0,0,0,$month,$i,$year));
      
      if($weekday==0)
      {
       $weekStr="星期日";
      }   
      if($weekday==1)
      {
       $weekStr="星期一";
      }
      if($weekday==2)
      {
       $weekStr="星期二";
      }
      if($weekday==3)
      {
       $weekStr="星期三";
      }
      if($weekday==4)
      {
       $weekStr="星期四";
      }
      if($weekday==5)
      {
       $weekStr="星期五";
      }
      if($weekday==6)
      {
       $weekStr="星期六";
      }
         $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$i."(".$weekStr.")</strong></td>";
    }
    $re.="</tr>";
    $re.="</table>";
      

  3.   

    你看哈前辈,我就是想实现这么一个功能,当我选择不同的周,能显示出不同的日期来,可是现在遇到了下面的问题。当$week=34的时候,可以输出这样的效果
    08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五) 08/27(星期六)  可是当我传进来另一个$week值的时候(即$week=35)的时候,就变成了下面这样的
    08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五  
    应该是:(08/28(星期日) 08/29(星期一) 08/30(星期二) 08/31(星期三) 09/01(星期四) 08/02(星期五) 08/03(星期六) )当$week=36的时候,又变成了这样的
    08/19(星期五) 08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四)  ...下面依次类推[/color]
            $week=34;//这个是从页面提交过来的周数,假定为当前的第34周
        $weekstart=strtotime("-$week days",time());
        $weekend=strtotime("+".(7-$week)." days",time());
        $weekstartday=date("d",$weekstart);
        $weekendday=date("d",$weekend);
        $re.="<table  width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
        $re.="<tr>";
        for ($i=$weekstartday;$i<$weekendday;$i++)
        {
              $weekday=date("w",mktime(0,0,0,$month,$i,$year));
      
          if($weekday==0)
          {
              $weekStr="星期日";
          }   
          if($weekday==1)
          {
              $weekStr="星期一";
          }
          if($weekday==2)
          {
              $weekStr="星期二";
          }
          if($weekday==3)
          {
              $weekStr="星期三";
          }
          if($weekday==4)
          {
              $weekStr="星期四";
          }
          if($weekday==5)
          {
              $weekStr="星期五";
          }
          if($weekday==6)
          {
              $weekStr="星期六";
          }
             $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$i."(".$weekStr.")</strong></td>";
        }
        $re.="</tr>";
        $re.="</table>";
      

  4.   

    逻辑错误!$week=34;//这个是从页面提交过来的周数,假定为当前的第34周
    $weekstart=strtotime("-$week days",time());//从当前日期向前 $week 天是什么含义?
    $weekend=strtotime("+".(7-$week)." days",time());//从当前日期向前 $week-7 天又是什么含义?
      

  5.   

    这个我也是参考了网上的,
    7-$week 就是显示几天啊,从周日开始,如果是6,就显示六天
    那个向前$week,我也不太明白是怎么了,您看看有什么好办法么,我也觉得是错在这了...
      

  6.   

    http://www.phpbuilder.com/board/showthread.php?t=10222903&page=2
    看#28,一句搞定。关键还是Date input format要熟悉,否则自己写就要先找到当前年第一个星期一是几月几号,不一定是1月1号开始算的周数。
      

  7.   

           /*
            * get sunday -> saturday by week number 35 in year 2011
            *=========================================================
            * echo dateByWeek(35,0,2011)." - ".dateByWeek(35,6,2011);
            *=========================================================
            */
            function dateByWeek($weekno,$day=1,$year='2011')
            {
                    return date('Y-m-d',strtotime("{$year}W{$weekno}{$day}"));
            }
      

  8.   


    您看我是不是用的不对,我这么写,写完后运行结果还和我提问时候的效果 一样,这怎么了啊
        $year=2011;
        $week=34;
        $day=1;
        $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}{$day}")));
        $weekstartday=date("d",$weekstart);         $re.="<table  width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
    $re.="<tr>";
    for ($i=0;$i<=7;$i++)
    {
              $day1=$weekstartday+$i;
              $weekday=date("w",mktime(0,0,0,$month,$day1,$year));
      
      if($weekday==0)
      {
       $weekStr="星期日";
      }   
      if($weekday==1)
      {
       $weekStr="星期一";
      }
      if($weekday==2)
      {
       $weekStr="星期二";
      }
      if($weekday==3)
      {
       $weekStr="星期三";
      }
      if($weekday==4)
      {
       $weekStr="星期四";
      }
      if($weekday==5)
      {
       $weekStr="星期五";
      }
      if($weekday==6)
      {
       $weekStr="星期六";
      }
    $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$day1."(".$weekStr.")</strong></td>";
    }
    $re.="</tr>";
    $re.="</table>";
      

  9.   

    9楼方法简便$year=2011;
    $week=34;
    $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
    $weekstartday=date("d",$weekstart);    
    $aWeek = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');$re="<table  width=auto cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
    $re.="<tr>";
    for ($i=0;$i< 7;$i++){
      $thetime=strtotime("+$i day",$weekstart);
    $weekstr = $aWeek[date('w',$thetime)];
    $month = date('m',$thetime);
    $day=date('d',$thetime);
      $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>{$month}/{$day}({$weekstr})</strong></td>";
    }
    $re.="</tr>";
    $re.="</table>";
    echo $re;
      

  10.   

    请注意:
    strtotime("{$year}W{$weekno}{$day}")
    中的 $day 表示周几function dateByWeek($weekno,$day=1,$year='2011')
    {
      return date('Y-m-d w',strtotime("{$year}W{$weekno}{$day}"));
    }for($i=1; $i<=7; $i++)
      echo dateByWeek(35, $i) . PHP_EOL;2011-08-29 1
    2011-08-30 2
    2011-08-31 3
    2011-09-01 4
    2011-09-02 5
    2011-09-03 6
    2011-09-04 0
      

  11.   


    非常感谢啊,不过前辈,我刚刚试了试,还是有个问题
    就是当$week=1的时候,显示出来的就变成了
    03/07(星期一) 03/08(星期二) 03/09(星期三) 03/10(星期四) 03/11(星期五) 03/12(星期六) 03/13(星期日) 
    它从三月份开始了,这是怎么了啊
      

  12.   

    是啊,唉,我什么时候也能和你们那么厉害啊......啊啊啊啊啊
    不过前辈,我刚刚试了试,还是有个问题
    就是当$week=1的时候,显示出来的就变成了
    03/07(星期一) 03/08(星期二) 03/09(星期三) 03/10(星期四) 03/11(星期五) 03/12(星期六) 03/13(星期日) 
    它从三月份开始了,这是怎么了啊
      

  13.   


    $year=2011;
    $week=1;
    $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
    $weekstartday=date("d",$weekstart);    
    $aWeek = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');$re="<table  width=auto cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
    $re.="<tr>";
    for ($i=0;$i< 7;$i++){
      $thetime=strtotime("+$i day",$weekstart);
        $weekstr = $aWeek[date('w',$thetime)];
        $month = date('m',$thetime);
        $day=date('d',$thetime);
      $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>{$month}/{$day}({$weekstr})</strong></td>";
    }
    $re.="</tr>";
    $re.="</table>";
    echo $re;
      

  14.   

    #9给你贴的链接你都没去看啊
    $week必须是个长度为2的串,1-9前面都要加0,你上面的代码把$week=1改成$week = '01'就对了
      

  15.   


    当2011的第一个周的时候,得到的第一天是2011-03-07,这是怎么回事 啊$year=2011;
    $week=1;
    $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
    echo $weekstart;
      

  16.   

    当2011的第一个周的时候,得到的第一天是2011-03-07,这是怎么回事 啊$year=2011;
    $week=1;
    $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
    echo $weekstart;
      

  17.   


    <?php
    echo header("Content-type: text/html; charset=utf-8"); 
    //phpinfo();
    echo strftime('%Y-%m-%d',strtotime('+34 week',strtotime('2011-01-01')))."<br>";
        $year=2011;
        $week=34;
        $day=1;
        $weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}{$day}")));
        $weekstartday=date("d",$weekstart);
        $month = date("m", $weekstart);    
    echo date("Y-m-d", $weekstart)."<br>".$weekstartday;
            $re.="<table  width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
        $re.="<tr>";
        for ($i=0;$i<=7;$i++)
        {
              $day1=$weekstartday+$i;
              $weekday=date("w",mktime(0,0,0,$month,$day1,$year));
      
          if($weekday==0)
          {
              $weekStr="星期日";
          }   
          if($weekday==1)
          {
              $weekStr="星期一";
          }
          if($weekday==2)
          {
              $weekStr="星期二";
          }
          if($weekday==3)
          {
              $weekStr="星期三";
          }
          if($weekday==4)
          {
              $weekStr="星期四";
          }
          if($weekday==5)
          {
              $weekStr="星期五";
          }
          if($weekday==6)
          {
              $weekStr="星期六";
          }
            $re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$day1."(".$weekStr.")</strong></td>";
        }
        $re.="</tr>";
        $re.="</table>";
    echo $re;