<?php
/**
 * 功能: 计算星期几
 *
 * 作者: 徐祖宁 (唠叨)
 * 邮箱: [email protected]
 * 开发: 2002.07
 * 
 * getDay 返回星期(星期天=0)
 * @param
 *  $y 年
 *  $m 月
 *  $d 日
 * 假定传入的日期合法
 * 计算范围:1752-9-14以后
*/
function getDay($y,$m,$d) {
  if($m==1 || $m==2) {
    $m += 12;
    $y--;
  }
  $t = $d+2*$m+bcdiv(3*($m+1),5,0)+$y+bcdiv($y,4,0)-bcdiv($y,100,0)+bcdiv($y,400,0);
  return ($t+1)%7;
}
?>
例:
<?php
echo getDay(2003,1,30);
?>

解决方案 »

  1.   

    不用这么麻烦,用date('w')就可以获得当前的星期的数字,用switch语句转成中文的星期。for example$w_number = date('w');switch($w_number)
    {
    '1' : $w_text = '星期一';
          break;
    '2':  $w_text = '星期二';
          break;}
    以此类推。
      

  2.   

    Jhzyz(黑名单上的人):你那个'w'的参数是什么?我要的是输入任意日期得到星期几!!如:2003-02-25是星期几??
      

  3.   

    <?
    $hour=$minute=$second=0;
    $dayofweek=getdate(mktime($hour,$minute,$second,$month,$day,$year));
    $weekday=$dayofweek['weekday'];
    $wday=$dayofweek['wday'];
    echo $weekday;           //得到星期几的英文名称
    echo '<br>';
    echo $wday;                 //得到0-6的数字,0代表Sunday,1代表Monday,......6代表Saturday
    ?>
    <form method=post>
    <input name=year size=4>年<input name=month size=2>月<input name=day size=2>日 <input type=submit value="结果">
    </form>
      

  4.   

    uGain(幽亙):还是你这个管用,写了,过年好。所有会贴的朋友新年快乐
      

  5.   

    那就用date ("w", mktime(0,0,0,7,1,2000));mktime的参数表示2000年7月1日0时0分0秒,前面三个0不管,后面套用你的指定日期,注意格式和date前面的参数'w'要小写。
      

  6.   

    偶也问一下
    $z=date("z");
    如果$z=134;
    偶怎么得到$z是几月几日星期几?
    反过来呢?
    如果回答上来 我重新开帖给分!!
      

  7.   

    不错,用date('w')是可以得到今天是星期几,若要得到任意日期的星期几可以用mktime函数构造一下。
    只是php的日期函数有效范围是1970-1-1到2035-12-31。
      

  8.   

    Jhzyz(黑名单上的人) :echo date ("w", mktime(0,0,0,30,1,2003));的结果是3,但今天是星期四呀?
      

  9.   

    用 uGain(幽亙)的一样有这个问题,是因为php时区设置的问题。
      

  10.   

    不好意思,我看错了,应该这样写 ("w", mktime(0,0,0,1,30,2003));后三位是月日年,PHP使用的是操作系统的时区。
      

  11.   

    Jhzyz(黑名单上的人) :这回对了
      

  12.   

    <?php$today="00:00:00 01-30-2003";
    echo "<BR>";$w=date("w",mktime($today));
    $week=array(
    "0"=>"星期日",
    "1"=>"星期一",
    "2"=>"星期二",
    "3"=>"星期三",
    "4"=>"星期四",
    "5"=>"星期五",
    "6"=>"星期六"
    );
    echo "the w is ".$w."<BR>";
    echo "this day is: ".$week[$w];
    ?>
      

  13.   

    应该是这样,一句搞掂:date("w","2003-01-30");
      

  14.   

    写错了,应该是:得到指定日期是星期几:date("w",mktime(0,0,0,1,30,2003));
    得到今天是星期几:date("z");
      

  15.   

    http://expert.csdn.net/Expert/topic/1089/1089300.xml?temp=.2809564
    来这里看吧, 万能公式. 1752-9-14以前的也能算.