Heim >Backend-Entwicklung >PHP-Tutorial >html - PHP如何生成一个指定年份一整年的日历

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

WBOY
WBOYOriginal
2016-06-06 20:51:502939Durchsuche

我想用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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn