要是PHP写的程序,不要用script来做的,谢谢

解决方案 »

  1.   

    <?
    /**
    * 农历类
    */
    class Lunar {
      var $year;
      var $month;
      var $day;
      var $isLeap;
      var $yearCyl;
      var $dayCyl;
      var $monCyl;
      var $time;
      var $lunarInfo = array(
        0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
        0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
        0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
        0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
        0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
        0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
        0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
        0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
        0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
        0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
        0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
        0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
        0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
        0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
        0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,
        0x14b63);  /**
       * 传回农历 y年的总天数
       */
      function lYearDays($y) {
        $sum = 348;
        for($i=0x8000; $i>0x8; $i>>=1)
          $sum += ($this->lunarInfo[$y-1900] & $i)? 1: 0;
        return $sum+$this->leapDays($y);
      }
      /**
       * 传回农历 y年闰月的天数
       */
      function leapDays($y) {
        if($this->leapMonth($y))
          return ($this->lunarInfo[$y-1900] & 0x10000)? 30: 29;
        else return 0;
      }
      /**
       * 传回农历 y年闰哪个月 1-12 , 没闰传回 0
       */
      function leapMonth($y) {
        return $this->lunarInfo[$y-1900] & 0xf;
      }
      /**
       * 传回农历 y年m月的总天数
       */
      function monthDays($y,$m) {
        return ($this->lunarInfo[$y-1900] & (0x10000>>$m))? 30: 29;
      }
      /**
       * 创建农历日期对象
       */
      function Lunar($objDate,$month=1,$day=1) {
        $leap=0;
        $temp=0;
        if(is_object($objDate))
          $this->time = mktime(0,0,0,$objDate->getMonth(),$objDate->getDate(),$objDate->getYear());
        else {
          $year = $objDate;
          $this->time = mktime(0,0,0,$month,$day,$year);
          if($year < 1970) {
            return;
            $temp = 0;
            for($i=1970; $i>$year; $i--) {
              $temp = $this->lYearDays($i);
              $offset -= $temp;
            }
          }
        }
        $offset = round($this->time/86400+25537);    $this->dayCyl = $offset + 40;
        $this->monCyl = 14;    for($i=1900; $i<$year && $offset>0; $i++) {
          $temp = $this->lYearDays($i);
          $offset -= $temp;
          $this->monCyl += 12;
        }    if($offset<0) {
          $offset += $temp;
          $i--;
          $this->monCyl -= 12;
        }    $this->year = $i;
        $this->yearCyl = $i-1864;
        $leap = $this->leapMonth($i); //闰哪个月    $this->isLeap = false;
        for($i=1; $i<13 && $offset>0; $i++) {
          //闰月
          if($leap>0 && $i==($leap+1) && $this->isLeap==false) {
            $i--;
            $this->isLeap = true;
            $temp = $this->leapDays($this->year);
          }else {
            $temp = $this->monthDays($this->year, $i);
          }      //解除闰月
          if($this->isLeap==true && $i==($leap+1))
            $this->isLeap = false;      $offset -= $temp;
          if($this->isLeap == false)
            $this->monCyl ++;
        }    if($offset==0 && $leap>0 && $i==$leap+1)
          if($this->isLeap)
            $this->isLeap = false;
          else {
            $this->isLeap = true;
            $i--;
            $this->monCyl--;
          }    if($offset<0) {
          $offset += $temp;
          $i--;
          $this->monCyl--;
        }    $this->month = $i;
        $this->day = $offset + 1;
      }  function cyclical($num) {
        $Gan = Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
        $Zhi = Array("子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
        return $Gan[$num%10].$Zhi[$num%12];
      }
      /**
       * 输出,根据需要直接修改本函数或在派生类中重写本函数
       */
      function display() {
        $nStr = array(' ','正','二','三','四','五','六','七','八','九','十','十一','腊');
        $nl = sprintf("%s年\n%s%s月%s\n",$this->cyclical($this->yearCyl),($this->isLeap?"闰":""),$nStr[$this->month],$this->cDay($this->day));
        //echo sprintf("农历 %s%s月%s<br>",($this->isLeap?"闰":""),$nStr[$this->month],$this->cDay($this->day));
        //echo sprintf("%s年 %s月 %s日",$this->cyclical($this->yearCyl),$this->cyclical($this->monCyl),$this->cyclical($this->dayCyl));
        RETURN $nl;
      }
      /**
       * 中文日期
       */
      function cDay($d) {
        $nStr1 = array('日','一','二','三','四','五','六','七','八','九','十');
        $nStr2 = array('初','十','廿','卅',' ');    switch($d) {
          case 10:
            $s = '初十';
            break;
          case 20:
            $s = '二十';
            break;
          case 30:
            $s = '三十';
            break;
          default :
            $s = $nStr2[floor($d/10)];
            $s .= $nStr1[$d%10];
        }
        return $s;
      }
    }  // 农历类定义结束
    function gb2utf($str)
    {
        $str = iconv("??????","UTF8",$str);
        return $str;
    }
    ?>
    <?
    //  测试例
    $now    = date("Y")."年".date("n")."月";
    $day    = date("d");
    $week    = date("w");
    switch (date("D")) {
      case "Mon":
        $week= "星期一";
        break;
      case "Tue":
        $week= "星期二";
        break;
      case "Wed":
        $week= "星期三";
        break;
      case "Thu":
        $week= "星期四";
        break;
      case "Fri":
        $week= "星期五";
        break;
      default:
        $week= "星期日";
        break;
    }
    $ld        = new Lunar(date("Y"),date("m"),date("d"));
    $nl        = $ld->display();
    //echo $now;
    //echo "<br>$nl";
    ?>
    <?php
    $now    = gb2utf($now);
    $r        = gb2utf("日");
    $nl        = gb2utf($nl);
    $week    = gb2utf($week);
    header("Content-type: image/PNG");
    $image=imagecreate(75,100);
    $back = ImageColorAllocate($image, 180,180,255);
    $white = ImageColorAllocate($image, 255,255,255);
    $font = "simhei.ttf";
    ImageTTFText($image, 10, 0, 5, 15, $white, $font, $now);
    ImageTTFText($image, 32, 0, 6, 50, $white, $font, $day);
    ImageTTFText($image, 12, 0, 50, 50, $white, $font, $r);
    ImageTTFText($image, 10, 0, 18, 65, $white, $font, $week);
    ImageTTFText($image, 8, 0, 10, 80, $white, $font, $nl);
    //imageline($image, 1, 1, 350, 25, $back);
    //imagearc($image, 200, 15, 20, 20, 35, 190, $white);
    //imagestring($image, $font, 4, 10, $now, $white);
    imagePNG($image);
    imagedestroy($image);
    echo $now;
    ?>