
正文
月球-I型,月份日历生成器----基于PHP7.3
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
- 生成月份周日的类
<?php
class mycalendar
{
function __construct($year,$mon)
{
$this->nianyue=$year.'-'.$mon.'-'.'';
$this->firstday=strtotime(date($this->nianyue));
$this->m = intval(date('m',$this->firstday));
$this->wdaylist=array();
$this->lday = strtotime(date($this->nianyue).'+1 month -1 day');
//echo "时间戳:".date('Y-m-d',$this->lday)."\n";
}
function startday()
{
$w = date('w',$this->firstday);
$diffdays=;
if ($w!=)
{
$diffdays= -$w;
}
$this->firstday = strtotime(date('Y-m-d',strtotime($this->nianyue))."+".$diffdays." day");
//array_push($this->wdaylist,$w);
//echo "\n".date('Y-m-d',$this->firstday);
//echo "\n".$this->firstday;
return $this->firstday;
}
function addwday()
{
$curday = $this->startday();
while (true){
if(intval(date('m',$curday)!=$this->m))
{
break;
}
//echo date('Y-m-d',$curday)."\n";
array_push($this->wdaylist,date('Y-m-d',$curday));
$curday=strtotime(date('Y-m-d',$curday)."+7 day");
}
return $this->wdaylist;
}
}
- 根据每个周日推算每个周的日期
<?php
require('mycal.php');
class gencal
{
function __construct(array $wkday)
{
$this->time = strtotime($wkday[count($wkday)-]);
$this->wdaylist=$wkday;
$this->ldday= date('m',$this->time);
$this->ttday= date('t',$this->time);
$this->firstday=strtotime($wkday[]);
}
function diffdays()
{
$lastday = ;
if($this->ldday<$this->ttday)
{
$lastday = strtotime(date('Y-m-d',$this->time)."+1 day");
}
//echo "this day:".date('Y-m-d',$lastday);
return $lastday;
}
function adddays()
{
//生成日期辗转相加
$genarray = array();
$startday = $this->diffdays();
//echo $startday."\n";
$newday = date('Y-m-d',strtotime(date('Y-m-d',strtotime($this->wdaylist[count($this->wdaylist)-]))."+1 day"));
//echo 'newday:'. $newday;
$genarray[] = $newday;
for ($i=;$i<;$i++)
{
$startday=strtotime(date('Y-m-d',$startday)."+1 day");
$genarray[] = date('Y-m-d',$startday);
/*array_push($genarray,strtotime(date('Y-m-d',$startday).'+1 day'));*/
}
return $genarray;
}
function minus($startday){
//辗转相减法
$thisweek=array();
$startday = strtotime($startday);
$thisweek[]=date('Y-m-d',$startday);
//echo $startday;
for($i=;$i>;$i--)
{
$startday=strtotime(date('Y-m-d',$startday)."-1 day");
$thisweek[$i]=date('Y-m-d',$startday);
//echo date('Y-m-d',$startday)."---"."\n";
}
return $thisweek;
}
function gendaylist()
{
$finallist=array();
for ($i=;$i<count($this->wdaylist);$i++)
{
array_push($finallist,$this->minus($this->wdaylist[$i]));
}
array_push($finallist,$this->adddays());
return $finallist;
}
}
- 测试
$cal = new mycalendar(,);
$wuwa= new gencal($cal->addwday());
//$wuwa->adddays();
print_r($wuwa->gendaylist());
- 输出结果
Array
(
[] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) [] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) [] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) [] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) [] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) [] => Array
(
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
[] => --
) )








