高分在线求救[关于阳历如何转换成阴历] 要是PHP写的程序,不要用script来做的,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?/*** 农历类*/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;?> 对于Get 得到的String数据要进行怎样的预处理才安全 php 编码问题 php编程的一个问题,附代码 php 查询数据库的返回结果的问题 access is denied 怎么隐藏label php中的session的/tmp目录下的session临时文件如何处理? 如何将访问文件服务器的用户名和密码直接写在地址或链接上? php代码执行速度瓶颈问题 有没有人使用Dropzone这个插件上传图片被打横了? 请问如何循环打开URL呢? 急:如何实现查询数据库多行、多列分页显示???
/**
* 农历类
*/
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;
?>