<?
$time = time();$year = date("Y", $time);
$month = date("n", $time);
$day = date("j", $time);$year2=@$_GET["year"];
$month2=@$_GET["month"];
$day2=@$_GET["day"];if($year2!="" || $month2!="" || $day2!=""){
if($year2!=""){
$year = $year2;
}
if($month2!=""){
$month = $month2;
}
if($day2!=""){
$day = $day2;
}
else{
$day = 1;
}
$time = mktime(0,0,0,$month,$day,$year);
}$num = date("t", $time);$today = mktime(0,0,0,$month,$day,$year);$date = array('(日)','(一)','(二)','(三)','(四)','(五)','(六)');if($month==1){
$year3 = $year-1;
$month3 = 12;
}
else{
$year3 = $year;
$month3 = $month-1;
}if($month==12){
$year4 = $year+1;
$month4 = 1;
}
else{
$year4 = $year;
$month4 = $month+1;
}print "<table width=150><tr><td colspan=7>";
print "<center>
<a href=\"?year=$year3&month=$month3\">".$month3."月</a>";
print " ".$year."年".$month."月 ";
print "<a href=\"?year=$year4&month=$month4\">".$month4."月</a>
</td></tr>
";print "
<tr> 
<td><font color=red>(日)</font></td>
<td>(一)</td>
<td>(二)</td>
<td>(三)</td>
<td>(四)</td>
<td>(五)</td>
<td><font color=blue>(六)</font></td>
</tr>
";for($i=1;$i<=$num;$i++){ $print_today = mktime(0, 0, 0, $month, $i, $year);
$w = date("w", $print_today); if($i==1){
print "<tr>";
for($j=1;$j<=$w;$j++){
print "<td></td>";
}
$data = check($i,$w,$year,$month,$day);
print "<td>$data</td>";
if($w==6){
print "</tr>";
}
}
else{
if($w==0){
print "<tr>";
}
$data = check($i,$w,$year,$month,$day);
print "<td>$data</td>";
if($w==6){
print "</tr>";
}
}}
print "</table>";function check($i,$w,$year,$month,$day){ if($w==0){
$change = "<font color=red><a href=\"?year=$year
&month=$month&day=$i&write=on\" color=red>$i</a></font>";
}
elseif($w==6){
$change = "<font color=blue><a href=\"?year=$year
&month=$month&day=$i&write=on\">$i</a></font>";
}
else{
$change = "<a href=\"?year=$year&month=$month&day=$i
&write=on\">$i</a>";
} return $change;}
?>

解决方案 »

  1.   

    date(); y年m月d日 w周(0为周日,1为周一)
    strtotime("+1 week", time()); 下周
    strtotime("-1 week", time()); 上周第几周的这个还真没有找到,可能要自己算了.
    其实就是这些函数,算来算去的.
      

  2.   

    应该是按年计算的吧。
    date("W")
    date("w")
    date('N')
    用这几个函数就可以搞定的。
      

  3.   

    麻烦给个例子呗,我实在是不行了!我学PHP才一个月,谢谢大哥了!
      

  4.   

    结帖~$end_date = dateweek(date('N',time()),time());
    $start_date = date('Y-m-d', strtotime("$end_date -6 day"));
    echo $start_date;
    echo "<br>";
    for ($i=1;$i<6;$i++)
    {
    echo date('Y-m-d',strtotime("$start_date +$i day"));
    echo "<br>";
    }
    echo $end_date;
    function dateweek($datetime,$time)
    {
    if(is_numeric($datetime))
    {
    switch ($datetime)
    {
    case 1:
    $end_date = date('Y-m-d',strtotime("+6 day",$time));
    break;
    case 2:
    $end_date = date('Y-m-d',strtotime("+5 day",$time));
    break;
    case 3:
    $end_date = date('Y-m-d',strtotime("+4 day",$time));
    break;
    case 4:
    $end_date = date('Y-m-d',strtotime("+3 day",$time));
    break;
    case 5:
    $end_date = date('Y-m-d',strtotime("+2 day",$time));
    break;
    case 6:
    $end_date = date('Y-m-d',strtotime("+1 day",$time));
    break;
    }
    return $end_date;
    }
    }
      

  5.   

    第几周可以用ceil()//两个参数都是一年中第几天的数字表示
    //可以用函数getdate获得
    function weekNum($startday, $nowday)
    {
    return ceil(($nowday - $startday)/ 7)
    }
    $ChineseWeek = array(0=>'星期天',1=>'星期一',...);
    //第一个星期的日期
    $StartWeek = getdate(strtotime('08/11/21'));
    $StartDay = $StartWeek['0'] - $StartWeek['wday']*3688*24;
    $TheWeek = strtotime('08/11/21');//当前查询日期
    $TheWeekInfo = getdate($TheWeek);
    $SDay = $TheWeek - $TheWeekInfo['wday']*3600*24;
    $EDay = $SDay + 3600*24*7;
    echo '第'+weekNum($StartDay,$TheWeek)+'周';
    for ($i=$SDay;$i<$EDay;$i+=3600*24)
    {
    $DayInfo = getdate($i);
    echo date("y/m/d", $i).$ChineseWeek[$DayInfo['wday']]."<BR>\n";
    }差不多就是这样子了