PHP显示日期、周几、农历初几、什么节日函数编程代码

<?
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日 
星期六 
农历戊子年 
腊月大初八 
腊八

时间: 2024-11-08 21:59:03

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

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

       在我们平时的工作开发中,我们通常会遇到这样的一个问题:某个实体的某个字段是DateTime类型的,可是我们在界面上只想让它显示日期不显示时间! 一个订单实体: //订单类 public class order { //订单ID public int id{get;set;} //物品ID public int resId{get;set;} //物品名称 public string resName { get; set; } //物品价格 public decimal price

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

Easyui默认是点击文本框后面的图标显示日期,为了更进一步优化体验 修改为单击文本框显示日期选择框 修改jquery.easyui.min.js(作者用的是1.3.6版本,其他版本或有区别) 可 ctrl+f 搜索 "_outerWidth():0" 在本行下面添加如下代码: // datebox单击文本框出现日期选择 start if ($(_83f).hasClass("datebox-f")) { _844.click(function() { _845.c

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

       在我们平时的工作开发中.我们一般会遇到这种一个问题:某个实体的某个字段是DateTime类型的,但是我们在界面上仅仅想让它显示日期不显示时间! 一个订单实体: //订单类 public class order { //订单ID public int id{get;set;} //物品ID public int resId{get;set;} //物品名称 public string resName { get; set; } //物品价格 public decimal price

网页显示日期

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title&

Android - 格式化显示日期

格式化显示日期 本文地址:http://blog.csdn.net/caroline_wendy Android,可以格式化设置地址,使用DateFormat类,具体可以查询英文文档. 其中,大写字母,表示英文,小写字母,表示数字,4个大写字母表示全称,3个大写字母表示简称. 代码: TextView dateTextView = (TextView)convertView.findViewById(R.id.crime_list_item_dateTextView); DateFormat d

android launcher 日历图标显示日期

看到iphone上的日历图标上的数字会随着日期的变化而变化,最近在android平台上也研究了 一下,实现方法如下: 直接上源码 在launcher里改的 首先,在IconCache.java文件中,找到方法private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info, HashMap<Object, CharSequence> labelCache) 在entry.icon = Utilities.c

Linux系统history命令显示日期和时间,增加history命令保留个数

编辑 /etc/profile文件 # vi /etc/profile 在文件末尾添加 export HISTTIMEFORMAT='%F %T '     #注意有个空格,为了显示时日期与命令之间有空格分割. export HISTSIZE="10000"    #默认保留1000条. 保存 重新login即可生效. Linux系统history命令显示日期和时间,增加history命令保留个数

基姆拉尔森公式--计算日期周几

基姆拉尔森公式计算日期周几 #include <iostream> using namespace std; string week[] ={"Mon","tue","Wen","Thu","Fri","Sat","Sun"}; int main(){ int y,m,d; while(cin>>y>>m>>d){ if

WinForm中DateTimePicker显示日期和时间

默认下dateTimePicker只显示日期, 如果只显示时间可以修改控件的Format属性为Time.如果你想现实日期+时间,就要使用自定义格式,添加代码如下: dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm:ss"; dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.ShowUpDown = false; 即可实现 日期+时间的显示