日历函数

来源:互联网 发布:中易智联软件多少钱 编辑:程序博客网 时间:2024/04/30 10:53

作者: 溪水 


<?php/** * 生成某年某月的日历 * @param $weekStart int 每周第一天是周几 * @param $linkUrl array 给日历里面的某些天添加一个a标签 */function generateCalendar( $month = 0, $year = 0, $weekStart = 0, $linkUrl = array() ){    $year = $year ? $year : date( 'Y' );    $month = $month ? $month : date( 'm' );    $time = mktime( 0, 0, 0, $month, 1, $year );    $weekMap = array( 0 => 'Su', 1 => 'Mo', 2 => 'Tu', 3 => 'We',                      4 => 'Th', 5 => 'Fr', 6 => 'Sa' );    $weekEnd = ( $weekStart + 6 ) % 7;    $day1week = date( 'w', $time );    $lastDay = date( 't', $time );    $curDay = $weekStart;    echo '<table border=0 cellpadding=4>';    echo '<tr>';    echo "<th colspan='7'>{$year}年{$month}月</th>";    echo "</tr>\n";    // 输出星期名字    echo '<tr>';    for( $i = 0; $i < 7; $i ++ )    {        echo "<td>{$weekMap[ ( $weekStart + $i ) % 7 ]}</td>";    }    echo "</tr>\n";    // 输出前导空白    echo '<tr>';    while( $curDay != $day1week )    {        echo '<td> </td>';        $curDay = ( $curDay + 1 ) % 7;    }    // 输出日期    for( $i = 1; $i <= $lastDay; $i ++ )    {        if( ! empty( $linkUrl[ $i ] ))        {            $b = "<a href='{$linkUrl[ $i ]}'>";            $e = '</a>';        } else        {            $b = '';            $e = '';        }        echo "<td>$b$i$e</td>";        if( $curDay == $weekEnd )        {            echo "</tr>\n<tr>";        }        $curDay = ( $curDay + 1 ) % 7;    }    // 输出后空白    $leave = ( $weekEnd - $curDay + 8 ) % 7;    for( $i = 0; $i < $leave; $i ++ )    {        echo '<td> </td>';    }    echo "</tr>\n";    echo '</table>';}// 测试代码, 输出 2000年1月 - 2020年12月 的日期表.for( $j = 2000; $j < 2020; $j ++ ){    for( $i = 1; $i <= 12; $i ++ )    {        echo '<div style="float: left">';        generateCalendar($i, $j, 0, array( rand( 1, 31 ) => 'http://s.com/1', rand( 1, 31 ) => 'http://s.com/2' ) );        echo '</div>';    }    echo '<div style="clear: both"></div>';}


原创粉丝点击