开发者社区> 问答> 正文

PHP如何生成一个指定年份一整年的日历

我想用php生成一段日历的html代码,而且这个日历是可以指定年份自动生成的,网上的代码都过于臃肿,要不就是搞了一个Class来生成,要不就是有一些我不要的功能。

请问有没有精简一点的方法来生成我要的日历呢,就像下面这种
screenshot

展开
收起
杨冬芳 2016-06-14 13:11:27 3014 0
1 条回答
写回答
取消 提交回答
  • IT从业
    <?php
      $year = '2013';
      $months =  array( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' );
      $days = array( 31, 
                     (strtotime("1 Mar ".$year) - strtotime("1 Feb ".$year)) / ( 24 * 60 * 60 ),
                     31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
      $wday = array( '', '', '', '', '', '', '' );
      $cal = array();
      foreach(range(0, 11) as $i) {
        $firstday = getdate(strtotime('1 '.$months[$i].' '.$year));
        $fromday = $firstday['wday'];
        $leftday =  7 - ( $fromday + $days[$i] ) % 7;
        $cal[] = array_merge( array_slice($wday, 0, $fromday),
                              range(1, $days[$i]),
                              array_slice($wday, 0, $leftday)
                            );
      }
    ?>
    <?php foreach(range(0, 11) as $i) : ?>
    <table>
      <thead>
        <tr><th colspan="7"><?php echo $months[$i].' '.$year; ?></th></tr>
        <tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th>
      </thead>
      <tbody>
        <tr>
        <?php
        foreach($cal[$i] as $k => $v) {
          if($k && !($k % 7)) echo "</tr><tr>";
          echo "<td>{$v}</td>";
        }
        ?>
        </tr>
      </tbody>
    </table>
    <?php endforeach ?>
    
    
    2019-07-17 19:37:16
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载