<?
function rili($style,$Atime){

$debug = false;

$glmonth = date("n",$Atime);    //1-12 
$glday   = date("j",$Atime);    //1-31 
$glweek  = date("w",$Atime);    //0-6 
$glyear  = date("Y",$Atime);    // 
if( $glweek==0 || $glweek==6 ){ 
    $bgcolor="#ff5555"; 
    $fontcolor="yellow"; 
}else{ 
    $bgcolor="#66ccff"; 
    $fontcolor="black"; 
}

$chday=explode(" ","星期日 星期一 星期二 星期三 星期四 星期五 星期六"); 
$chnum=explode(" ","一 二 三 四 五 六 七 八 九 十"); 
//$isBig=explode(" ","大 小"); 
$dayName = explode(" ","初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十");

$date = mktime(0,0,0,2,5,2000);  //从庚辰年春节算起   
$K = floor(($Atime - date("U",$date) )/86400 ); 
// 
//$daypyear = array(354,384,354,355,384,355); 
$skydry = explode(" ","甲 乙 丙 丁 戊 已 庚 辛 壬 癸"); 
$groundbranch = explode(" ","子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥"); 
$nongmonth = explode(" ","正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月"); 
for($i=0;$i < 60;$i++) 

    $yearName[] = $skydry[($i + 6 )%10].$groundbranch[($i + 4)%12]."年"; 

//$yearName = explode(" ","庚辰年 辛巳年 壬午年 癸未年 甲申年 乙酉年 丙戌年 丁亥年"); 
$adaypmonth = array( 
explode(" ","30 30 29 29 30 29 29 30 29 30 30 29"  ),    //庚辰年 00 
explode(" ","30 30 29 30 -29 30 29 29 30 29 30 29 30"    ),    //辛巳年 01 
explode(" ","30 30 29 30 29 30 29 29 30 29 30 29"  ),    //壬午年 02 
explode(" ","30 30 29 30 30 29 30 29 29 30 29 30"  ),    //癸未年 03 
explode(" ","29 30 -29 30 30 29 30 29 30 29 30 29 30"    ),    //甲申年 04 
explode(" ","29 30 29 30 29 30 30 29 30 29 30 29"  ),    //乙酉年 05 
explode(" ","30 29 30 29 30 29 30 29 -30 30 29 30 30"    ),    //丙戌年 06 
explode(" ","29 29 30 29 29 30 29 30 30 30 29 30"  ),    //丁亥年 07 
explode(" ","30 29 29 30 29 29 30 29 30 30 29 30"  )    //戊子年 08 
); 
if($debug)print_r($adaypmonth); 
while(list($i,$j) = each($adaypmonth)) 

    //$daypyear[$i] = array_sum($j); 
    $p=0; 
    while(list($m,$n) = each($j)) 
    { 
  if($n>0) 
  { 
      $amname[$i][$m] = $nongmonth[$p]; 
      $p++; 
      $daypyear[$i] += $n; 
  }else 
  { 
      $amname[$i][$m] = "闰".$nongmonth[$p]; 
      $daypyear[$i] -= $n;   
  } 
  if($n == 29 || $n == -29) 
  { 
      $amname[$i][$m] = $amname[$i][$m]."小"; 
  }else 
  { 
      $amname[$i][$m] = $amname[$i][$m]."大"; 
  } 
    } 

/* 
$amname = array( 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //00 
"正月 二月 三月 四月 闰四月 五月 六月 七月 八月 九月 十月 十一月 腊月",  //01 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //02 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //03 
"正月 二月 闰二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",  //04 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //05 
"正月 二月 三月 四月 五月 六月 七月 八月 闰八月 九月 十月 十一月 腊月",  //06 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //07 
"正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 腊月",      //08 
); 
*/ 
// 
$yearnum = 0; 
while($K >= $daypyear[$yearnum]){ 
//    echo "K=$K yearnum=$yearnum daypyear=${daypyear[$yearnum]}\n"; 
    $K-=$daypyear[$yearnum++]; 

if($debug)echo "K:".$K; 
$year = $yearName[$yearnum]; 
$month = $adaypmonth[$yearnum]; 
//$mName = explode(" ",$amname[$yearnum]); 
$mName = $amname[$yearnum];

$i=0; 
while($K >= $month[$i])$K -= abs($month[$i++]);

/* 
if($month[$i]==29)$l=$isBig[1]; 
else    $l=$isBig[0];    //大小月 
*/ 
//  year  农历的年份 
//  i,nlmonth  农历的月数  数组序号0-12(11)   
//  K,nlday    农历的天数  0-29(28) 
$nlmonth = $i; 
$nlday   = $K+1;$JR1 = ""; //公历节日 

//固定节日 
$gljr = array( 
101=>"元旦", 
202=>"世界湿地日(1996)", 
214=>"情人节", 
303=>"全国爱耳日", 
308=>"妇女节(1910)", 
312=>"植树节(1979)", 
315=>"国际消费者权益日", 
320=>"世界睡眠日", 
325=>"世界气象日", 
401=>"愚人节", 
407=>"世界卫生日", 
501=>"国际劳动节", 
504=>"中国青年节", 
508=>"世界红十字日", 
512=>"国际护士节", 
519=>"全国助残日", 
601=>"国际儿童节", 
605=>"世界环境日", 
622=>"中国儿童慈善活动日", 
623=>"国际奥林匹克日", 

707=>"中国人民抗日战争纪念日", 
801=>"中国人民解放军建军(1927)", 
903=>"抗日战争胜利纪念日(1945)", 
908=>"国际扫盲日", 
910=>"教师节", 
916=>"世界臭氧层保护日", 
918=>"九?一八纪念日", 
927=>"世界旅游日", 
929=>"国际聋人节", 
1001=>"中华人民共和国成立", 
1014=>"世界标准日", 
1024=>"联合国日", 
1205=>"国际志愿人员日", 
1229=>"12.9运动纪念日", 
1225=>"圣诞节" 
);

if(isset($gljr[$glmonth*100+$glday])) $JR1.2881064151=$gljr[$glmonth*100+$glday];

//不固定节日 
//及 
$JR=""; 
switch($glmonth){ 
    case 1: 
  switch($glday){ 
      case 1: 
    $bgcolor="#ff5555";    //元旦 
    $fontcolor="yellow"; 
    break;      
  } 
  break; 
    case 5: 
  switch($glday){ 
      case 1: 
    $bgcolor="#ff5555";    //五一 
    $fontcolor="yellow"; 
    break;      
  } 
  if(($glday>7)&&($glday<15)&&($glweek==0))$JR.="母亲节"; 
  break; 
    case 6: 
  if(($glday>14)&&($glday<22)&&($glweek==0))$JR.="父亲节"; 
  break; 
    case 9: 
  switch($glday){ 
      case 18: 
    $bgcolor="#666666";    //9.18 
    $fontcolor="#ffffff"; 
    break;      
  } 
  break; 
    case 10: 
  switch(date("j",$Atime)){ 
      case 1: 
    $bgcolor="#ff5555";    //国庆 
    $fontcolor="yellow"; 
    $JR.=(date("Y",$Atime)-1949)."周年";break;      
  } 
  break; 

if(strlen($JR)>1)$JR2=$JR;

$JR=""; 
$JR3=""; 
//固定农历节日 
//*********农历节日 
//K为日减一 
switch(substr($mName[$i],0,-2)){ 
    case "正月": 
  switch($nlday){ 
      case 1: 
    $bgcolor="#ff5555";    // 
    $fontcolor="yellow"; 
    $JR3.="春节";break;      
      case 15: 
    $JR3.="元宵节";break;      
  } 
  break; 
    case "二月": 
  switch($nlday){ 
      case 2: 
    $JR3.="龙抬头";break;      
  } 
  break; 
    case "三月": 
  break; 
    case "四月": 
  break; 
    case "五月": 
  switch($nlday){ 
      case 5: 
    $JR3.="端午节";break;      
  } 
  break; 
    case "六月": 
  break; 
    case "七月": 
  switch($nlday){ 
      case 7: 
    $JR3.="七夕";break;      
  } 
  break; 
    case "八月": 
  switch($nlday){ 
      case 15: 
    $bgcolor="#ff5555";    // 
    $fontcolor="yellow"; 
    $JR3.="中秋节";break;      
  } 
  break; 
    case "九月": 
  switch($nlday){ 
      case 9: 
    $JR3.="重阳节";break;      
  } 
  break; 
    case "十月": 
  break; 
    case "十一月": 
  break; 
    case "腊月": 
  switch($nlday){ 
      case 8: 
    $JR3.="腊八";break;      
      case 25: 
    $JR3.="小年";break;      
  } 
  if(($nlday==30)||(($nlday==29)&&(substr($mName[$i],-2)==="小"))){ 
      $bgcolor="#ff5555";    // 
      $fontcolor="yellow"; 
      $JR3.="除夕"; 
  } 
  break; 
}

//24节气 
$nl24j[2002] = array( 
105=>"小寒", 
120=>"大寒", 
204=>"立春", 
219=>"雨水", 
306=>"惊蛰", 
321=>"春分", 
405=>"清明", 
420=>"谷雨", 
506=>"立夏", 
521=>"小满", 
606=>"芒种", 
621=>"夏至", 
707=>"小暑", 
723=>"大暑", 
808=>"立秋", 
823=>"处暑", 
908=>"白露", 
923=>"秋分", 
1008=>"寒露", 
1023=>"霜降", 
1107=>"立冬", 
1122=>"小雪", 
1207=>"大雪", 
1222=>"冬至" 
); 
$nl24j[2003] = array( 
106=>"小寒", 
120=>"大寒", 
204=>"立春", 
219=>"雨水", 
306=>"惊蛰", 
321=>"春分", 
405=>"清明", 
420=>"谷雨", 
506=>"立夏", 
521=>"小满", 
606=>"芒种", 
622=>"夏至", 
707=>"小暑", 
723=>"大暑", 
808=>"立秋", 
823=>"处暑", 
908=>"白露", 
923=>"秋分", 
1009=>"寒露", 
1024=>"霜降", 
1108=>"立冬", 
1123=>"小雪", 
1207=>"大雪", 
1222=>"冬至" 
); 
$nl24j[2004] = array( 
106=>"小寒", 
121=>"大寒", 
204=>"立春", 
219=>"雨水", 
305=>"惊蛰", 
320=>"春分", 
402=>"清明", 
420=>"谷雨", 
505=>"立夏", 
521=>"小满", 
605=>"芒种", 
621=>"夏至", 
707=>"小暑", 
722=>"大暑", 
807=>"立秋", 
823=>"处暑", 
907=>"白露", 
923=>"秋分", 
1008=>"寒露", 
1023=>"霜降", 
1107=>"立冬", 
1122=>"小雪", 
1207=>"大雪", 
1221=>"冬至" 
); 
if(isset($gl24j[$glyear][$glmonth*100+$glday])) $JR4.=$gl24j[$glyear][$glmonth*100+$glday];

if($style=="1"){ 288064151
$str = "<nobr>".date("Y年n月j日",$Atime).$chday[date("w",$Atime)]."</nobr><BR>"; 
$str .="<nobr>农历".$year."".$mName[$i]."".$dayName[$K]."</nobr>"; 
if(strlen("$JR1 $JR2 $JR3 $JR4")>3)$str .="<BR>$JR1 $JR2 $JR3 $JR4"; 
}else{ 
$str = "".date("Y年",$Atime)."<br>".date("n月j日",$Atime)."<br>".$chday[date("w",$Atime)]."<BR>"; 
$str .="农历".$year."<br>".$mName[$i]."".$dayName[$K]; 
if(strlen($JR1)>1)$str.="<BR>$JR1"; 
if(strlen($JR2)>1)$str.="<BR>$JR2"; 
if(strlen($JR3)>1)$str.="<BR>$JR3"; 
if(strlen($JR4)>1)$str.="<BR>$JR4"; 
}

//***************************/ 
echo "<table border=0><tr><td align='center' valign='center'"; 
echo ' bgcolor="'; 
echo $bgcolor.'"'; 
echo "><font style='font-size:9pt;line-height: 150%' color=$fontcolor>$str $JR"; 
echo "</font></td></tr></table>";

}  //end function rili 
?>

函数描述及例子

<? 
rili("1",time()-3600*24); 
?> 
显示结果: 
2009年 
1月3日 
星期六 
农历戊子年 
腊月大初八 
腊八

PHP显示日期、周几、农历初几、什么节日函数编程代码的更多相关文章

  1. Java 实现输入公历日期输出农历日期、生肖、天干地支、节日、节气等信息

    最近的工作中客户要求前台页面展示日历,日历内容包括:农历年月日日.公历年月日.生肖.天干地支.农历节日.公历节日.24节气等信息,之前在网上查找资料关于Java实现方面的文章不少,但是大多数针对节气. ...

  2. 显示日期的指令: date

    1.显示日期的指令: date (1)参数: (2)实例

  3. IOS 将公历日期转换为中国农历

    代码方法: //日期阳历转换为农历: - (NSString *)convertDateToNongLi:(NSString *)aStrDate { NSDate *dateTemp = nil; ...

  4. LaTeX去掉默认显示日期时间

    LaTeX去掉默认显示日期时间: \date{}

  5. Easyui datebox单击文本框显示日期选择

    Easyui默认是点击文本框后面的图标显示日期,为了更进一步优化体验 修改为单击文本框显示日期选择框 修改jquery.easyui.min.js(作者用的是1.3.6版本,其他版本或有区别) 可 c ...

  6. asp 之 让实体中字段类型为DateTime的字段仅仅显示日期不显示时间

           在我们平时的工作开发中.我们一般会遇到这种一个问题:某个实体的某个字段是DateTime类型的,但是我们在界面上仅仅想让它显示日期不显示时间! 一个订单实体: //订单类 public ...

  7. Easyui datebox单击文本框显示日期选择 eayui版本1.5.4.1

    Easyui默认是点击文本框后面的图标显示日期,体验很不好,所以我想单击文本框就显示日期选择框,网上很多版本是1.3,1.4的,于是自己就比葫芦画瓢改了一个1.5.4.1的版本. 我参考了网上这个帖子 ...

  8. 工作总结 @Html.EditorFor @Html.TextBoxFor 表达式树 绑定显示日期格式数据

    页面显示 不出来 没有 这个input ............. 换成 @Html.TextBoxFor input 出来了 这是 为什么呢 ? 用@Html.TextBox 也可以出来 为什么 @ ...

  9. 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 Date 对象,在页面上显示一个万年历.选择不同的年份和月份,在页面中显示当前月的日历 实现思路: 在页面中添加两个 <s ...

随机推荐

  1. HDU1297 Children’s Queue (高精度+递推)

    Children’s Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. Android Handler leak 分析及解决办法

    In Android, Handler classes should be static or leaks might occur, Messages enqueued on the applicat ...

  3. August 4th, 2016, Week 32nd, Thursday

    How does the world look through your eyes? 你眼中的世界是什么样的呢? This morning I saw a girl that is just the ...

  4. Mysql sql查询性能侦查

    Mysql 服务性能优化配置:http://5434718.blog.51cto.com/5424718/1207526[该文章很好] Sql查询性能优化 对Sql进行优化,肯定是该Sql运行未能达到 ...

  5. Hadoop 中文编码相关问题 -- mapreduce程序处理GBK编码数据并输出GBK编码数据(转)

    hadoop的hdfs文件系统中,默认的是utf-8, 故你上传的文件是要设置成utf-8.当输入的是gbk,有该如何? 输入是GBK文件, 输出也是 GBK 文件的示例代码: Hadoop处理GBK ...

  6. 学习BigDecimal用法

    一.简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更 ...

  7. JavaScript字符串&数字间转换

    比较操作符的操作数可以是任意类型.然而,只有数字和字符串才能真正执行边角操作,因此那些不是数字和字符串的操作数都讲进行类型转换,类型转换规则如下:      如果操作数为对象,那么对象转换为原始值:如 ...

  8. LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]

    1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉   import javax.servlet.http.H ...

  9. oracle体系结构详细示意图

  10. 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file

    转自:http://blog.csdn.net/david_xtd/article/details/7625626 前提:ubuntu-debug机器上向SVN提交了pdu-IVT,想在别的普通机器上 ...