.ecalendar{border-top:4px #2e92d7 solid; border-right:1px #d0e3f1 solid;border-bottom:1px #d0e3f1 solid;margin-top:10px;margin-bottom:10px;} .ecalendar td{ border-top:1px #d0e3f1 solid; border-left:1px #d0e3f1 solid; vertical-align:top;padding:0px;} .todays{background-color:#ff2a00;color:#fff;padding:3px;} .others{padding:3px;} .weektd{padding:5px;} a.elink{display:block;width:136px;line-height:28px; background: url(source/plugin/xj_eventcalendar/images/event.gif) no-repeat 3px 6px; white-space:nowrap;text-overflow:ellipsis;overflow:hidden;} a.rlink{display:block;width:136px;line-height:28px; background: url(source/plugin/xj_eventcalendar/images/robfloor.png) no-repeat 3px 6px; white-space:nowrap;text-overflow:ellipsis;overflow:hidden;} a:hover.elink .rlink{display:block;width:136px;line-height:28px;color:#fff;text-decoration:none;background-color:#2e92d7;} '; if(!empty($_GET)){ $year = $_GET['year']; $month = $_GET['month']; } if(empty($year)){ $year = date('Y'); } if(empty($month)){ $month = date('m'); } //当月开始时间 $monthstart = strtotime($year.'-'.$month.'-1'); $monthend = strtotime($year.'-'.$month.'-'.Date('t',strtotime($year.'-'.$month.'-1')).' 23:59:59'); $event = array(); if($_G['cache']['plugin']['xj_event']){ //判断是否安装有超级活动 $query = DB::query("SELECT A.tid,A.starttime,B.subject FROM ".DB::table('xj_event')." A,".DB::table('forum_thread')." B WHERE A.tid=B.tid AND A.starttime >= $monthstart and A.starttime<= $monthend"); while($value = DB::fetch($query)){ $value['styleclass'] = 'elink'; $event[intval(date("d",$value['starttime']))][] = $value; } } $query = DB::query("SELECT A.tid,A.starttimefrom as starttime,B.subject FROM ".DB::table('forum_activity')." A,".DB::table('forum_thread')." B WHERE A.tid=B.tid AND A.starttimefrom >= $monthstart and A.starttimefrom<= $monthend"); while($value = DB::fetch($query)){ $value['styleclass'] = 'elink'; $event[intval(date("d",$value['starttime']))][] = $value; } //系统抢楼贴 $query = DB::query("SELECT A.tid,A.starttimefrom as starttime,B.subject FROM ".DB::table('forum_threadrush')." A,".DB::table('forum_thread')." B WHERE A.tid=B.tid AND A.starttimefrom >= $monthstart and A.starttimefrom<= $monthend"); while($value = DB::fetch($query)){ $value['styleclass'] = 'rlink'; $event[intval(date("d",$value['starttime']))][] = $value; } //超级抢楼贴 if($_G['cache']['plugin']['xj_robfloor']){ //判断是否安装有超级活动 $query = DB::query("SELECT A.tid,A.begintime as starttime,B.subject FROM ".DB::table('xj_robfloor')." A,".DB::table('forum_thread')." B WHERE A.tid=B.tid AND A.begintime >= $monthstart and A.begintime<= $monthend"); while($value = DB::fetch($query)){ $value['styleclass'] = 'rlink'; $event[intval(date("d",$value['starttime']))][] = $value; } } //echo Date('t',strtotime('2013-2-10')); $start_weekday = date('w',mktime(0,0,0,$month,1,$year)); //echo $start_weekday; $days = date('t',mktime(0,0,0,$month,1,$year)); //echo $days; $week = array(lang('plugin/xj_eventcalendar', 'monday'),lang('plugin/xj_eventcalendar', 'tuesday'),lang('plugin/xj_eventcalendar', 'wednesday'),lang('plugin/xj_eventcalendar', 'thursday'),lang('plugin/xj_eventcalendar', 'friday'),lang('plugin/xj_eventcalendar', 'saturday'),lang('plugin/xj_eventcalendar', 'sunday')); $i = 0; $k = 1; $j = 0; echo ''; echo ''; echo ''; for($i = 0;$i < 7;$i++){ echo ''; } echo ''; echo ''; for($j = 0;$j < $start_weekday;$j++){ echo ''; } while($k <= $days){ $eventlist = ''; $tdbg = ''; if($event[$k]){ foreach($event[$k] as $value){ $eventlist = $eventlist.'     '.$value['subject'].''; } $tdbg = 'background-color:#ebf3fa;'; } if($k == date('d') and $month == date('m') and $year == date('Y')){ echo ''; }else{ echo ''; } if(($j+1) % 7 == 0){ echo ''; } $j++; $k++; } while($j % 7 != 0){ echo ''; $j++; } echo ''; echo '
 '.$year.' '.lang('plugin/xj_eventcalendar', 'year').' '.$month.' '.lang('plugin/xj_eventcalendar', 'month').' 
'.$week[$i].'
'.$j.'
'.lang('plugin/xj_eventcalendar', 'today').' ('.$k.lang('plugin/xj_eventcalendar', 'day').' '.getnl($year,$month,$k).')
'.$eventlist.'
'.$k.lang('plugin/xj_eventcalendar', 'day').' '.getnl($year,$month,$k).'
'.$eventlist.'
'.$j.'
'; include template('common/footer'); function lastYear($year,$month){ $year = $year-1; return "year=$year&month=$month"; } function lastMonth($year,$month){ if($month == 1){ $year = $year -1; $month = 12; }else{ $month--; } return "year=$year&month=$month"; } function nextYear($year,$month){ $year = $year+1; return "year=$year&month=$month"; } function nextMonth($year,$month){ if($month == 12){ $year = $year +1; $month = 1; }else { $month++; } return "year=$year&month=$month"; } function getnl($year,$month,$day){ ########################################### #作者: 沈潋(S&S Lab) # #E-mail:shenlian@hotmail.com # #web: http://www.focus-2000.com # # # #版权声明: # #作者开放版权 # #允许无条件地使用本文件的全部或部分 # #可作任何修改或增补 # #如果您使用了本文件,请给作者写一封E-mail # #如有问题欢迎同作者联系 # #谢谢您的关注! # ########################################### /* *修改:小许 *mail: san@xfocus.org *web : http://www.xfocus.org * *说实在的,我对古历可以说一窍不通,下面这个数组还是不理解 可是作者的信箱好像不通 *基本上是依样画葫芦,所以出现错误,见笑见笑,呵呵 */ #农历每月的天数 $everymonth=array( 0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4), 4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5), 5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6), 6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7), 7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8), 8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9), 9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10), 10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11), 11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12), 12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1), 13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2), 14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3), 15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4), 16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5), 17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6), 18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7), 19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8), 20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9), 21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10), 22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11), 23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12), 24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1), 25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2), 26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3), 27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4), 28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5), 29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6), 30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7), 31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8), 32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9), 33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10), 34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11), 35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12), 36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1), 37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2), 38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3), 39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4), 40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5), 41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6), 42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7), 43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8), 44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9), 45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10), 46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11), 47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12), 48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1), 49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2), 50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3), 51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4), 52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5), 53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6), 54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7), 55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8), 56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9), 57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10), 58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11), 59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12), 60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1), 61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2), 62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3), 63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4), 64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5), 65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6), 66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7), 67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8), 68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9), 69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10), 70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11), 71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12), 72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1), 73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2), 74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3), 75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4), 76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5), 77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6), 78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7), 79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8), 80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9), 81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10), 82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11), 83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12), 84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1), 85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2), 86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3), 87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4), 88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5), 89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6), 90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7), 91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8), 92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9), 93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10), 94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11), 95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12), 96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1), 97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2), 98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3), 99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4), 100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5), 101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6), 102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7), 103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8), 104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9), 105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10), 106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11), 107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12), 108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1), 109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2), 110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3), 111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4), 112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5), 113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6), 114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7), 115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8), 116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9), 117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10), 118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11), 119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12), 120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1) ); ############################## #农历天干 $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"); #农历地支 $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)", "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)"); #农历月份 $mmonth=array(lang('plugin/xj_eventcalendar', 'run'),lang('plugin/xj_eventcalendar', 'zhen'),lang('plugin/xj_eventcalendar', 'two'),lang('plugin/xj_eventcalendar', 'three'),lang('plugin/xj_eventcalendar', 'four'),lang('plugin/xj_eventcalendar', 'five'),lang('plugin/xj_eventcalendar', 'six'), lang('plugin/xj_eventcalendar', 'seven'),lang('plugin/xj_eventcalendar', 'eight'),lang('plugin/xj_eventcalendar', 'nine'),lang('plugin/xj_eventcalendar', 'ten'),lang('plugin/xj_eventcalendar', 'eleven'),lang('plugin/xj_eventcalendar', 'twelve'),lang('plugin/xj_eventcalendar', 'month')); #农历日 $mday=array("null",lang('plugin/xj_eventcalendar', 'chuyi'),lang('plugin/xj_eventcalendar', 'chuer'),lang('plugin/xj_eventcalendar', 'chusan'),lang('plugin/xj_eventcalendar', 'chusi'),lang('plugin/xj_eventcalendar', 'chuwu'),lang('plugin/xj_eventcalendar', 'chuniu'),lang('plugin/xj_eventcalendar', 'chuqi'),lang('plugin/xj_eventcalendar', 'chuba'),lang('plugin/xj_eventcalendar', 'chujiu'),lang('plugin/xj_eventcalendar', 'chushi'), lang('plugin/xj_eventcalendar', 'eleven'),lang('plugin/xj_eventcalendar', 'twelve'),lang('plugin/xj_eventcalendar', 'shisan'),lang('plugin/xj_eventcalendar', 'shisi'),lang('plugin/xj_eventcalendar', 'shiwu'),lang('plugin/xj_eventcalendar', 'shiniu'),lang('plugin/xj_eventcalendar', 'shiqi'),lang('plugin/xj_eventcalendar', 'shiba'),lang('plugin/xj_eventcalendar', 'shijiu'),lang('plugin/xj_eventcalendar', 'ershi'), lang('plugin/xj_eventcalendar', 'ershiyi'),lang('plugin/xj_eventcalendar', 'ershier'),lang('plugin/xj_eventcalendar', 'ershisan'),lang('plugin/xj_eventcalendar', 'ershisi'),lang('plugin/xj_eventcalendar', 'ershiwu'),lang('plugin/xj_eventcalendar', 'ershiniu'),lang('plugin/xj_eventcalendar', 'ershiqi'),lang('plugin/xj_eventcalendar', 'ershiba'),lang('plugin/xj_eventcalendar', 'ershiju'),lang('plugin/xj_eventcalendar', 'sanshi')); ############################## #星期 $weekday = array(lang('plugin/xj_eventcalendar', 'monday'),lang('plugin/xj_eventcalendar', 'tuesday'),lang('plugin/xj_eventcalendar', 'wednesday'),lang('plugin/xj_eventcalendar', 'thursday'),lang('plugin/xj_eventcalendar', 'friday'),lang('plugin/xj_eventcalendar', 'saturday'),lang('plugin/xj_eventcalendar', 'sunday')); #阳历总天数 至1900年12月21日 $total=11; #阴历总天数 $mtotal=0; ############################## #获得当日日期 //$today=getdate(); $today["year"] = $year; $today["mon"] = $month; $today["mday"] = $day; if($today["year"]<1901 || $today["year"]>2020) die("年份出错!"); $cur_wday=$today["wday"]; for($y=1901;$y<$today["year"];$y++) { //计算到所求日期阳历的总天数-自1900年12月21日始,先算年的和 $total+=365; if ($y%4==0) $total++; } switch($today["mon"]) { //再加当年的几个月 case 12: $total+=30; case 11: $total+=31; case 10: $total+=30; case 9: $total+=31; case 8: $total+=31; case 7: $total+=30; case 6: $total+=31; case 5: $total+=30; case 4: $total+=31; case 3: $total+=28; case 2: $total+=31; } if($today["year"]%4 == 0 && $today["mon"]>2) $total++; //如果当年是闰年还要加一天 $total=$total+$today["mday"]-1; //加当月的天数 $flag1=0; //判断跳出循环的条件 $j=0; while ($j<=120){ //用农历的天数累加来判断是否超过阳历的天数 $i=1; while ($i<=13){ $mtotal+=$everymonth[$j][$i]; if ($mtotal>=$total){ $flag1=1; break; } $i++; } if ($flag1==1) break; $j++; } if($everymonth[$j][0]<>0 and $everymonth[$j][0]<$i){ //原来错在这里,对闰月没有修补 $mm=$i-1; } else{ $mm=$i; } if($i==$everymonth[$j][0]+1 and $everymonth[$j][0]<>0) { $nlmon=$mmonth[0].$mmonth[$mm];#闰月 } else { $nlmon=$mmonth[$mm].$mmonth[13]; } #计算所求月份1号的农历日期 $md=$everymonth[$j][$i]-($mtotal-$total); if($md > $everymonth[$j][$i]) $md-=$everymonth[$j][$i]; $nlday=$mday[$md]; //$nowday=date("Y年n月j日 ").$weekday[$cur_wday]."
".$mten[$everymonth[$j][14]].$mtwelve[$everymonth[$j][15]]."年".$nlmon.$nlday; //echo "$nowday"; if($nlday == "初一"){ return $nlmon.$nlday; }else{ return $nlday; } } ?>