> 백엔드 개발 > PHP 튜토리얼 > html - PHP如何生成一个指定年份一整年的日历

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

WBOY
풀어 주다: 2016-06-06 20:51:50
원래의
2948명이 탐색했습니다.

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

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

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

回复内容:

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

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

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

<?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) : ?>
로그인 후 복사
$v) { if($k && !($k % 7)) echo ""; echo ""; } ?>
Sun Mon Tue Wed Thu Fri Sat
{$v}

从你的描述看来,只需要知道指定年份的每个月的天数和每天对应的周次即可。
PHP中 Calendar 函数可以实现第一步:

http://php.net/manual/zh/function.cal...
int cal_days_in_month ( int $calendar , int $month , int $year )

http://php.net/manual/zh/function.jdd...
mixed jddayofweek ( int $julianday [, int $mode = CAL_DOW_DAYNO ] )

剩下的就是写循环遍历所有月,按月生成日历了。

<code>    $begin = new DateTime( '2016-01-01' );
    $end = (new DateTime( '2016-12-31' ))->modify( '+1 day' );

    $interval = new DateInterval('P1D');
    $daterange = new DatePeriod($begin, $interval ,$end);

    foreach($daterange as $date){
        echo $date->format("Y-m-d"). "\n";
    }</code>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿