月球-I型,月份日历生成器----基于PHP7.3

Posted saintdingspage

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了月球-I型,月份日历生成器----基于PHP7.3相关的知识,希望对你有一定的参考价值。

  • 生成月份周日的类
<?php
class mycalendar

    function __construct($year,$mon)
    
        $this->nianyue=$year.-.$mon.-.01;
        $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=0;
        if ($w!=0)
        
            $diffdays= 7-$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)-1]);
        $this->wdaylist=$wkday;
        $this->ldday= date(m,$this->time);
        $this->ttday= date(t,$this->time);
        $this->firstday=strtotime($wkday[0]);
    
    function diffdays()
    
        $lastday = 0;
        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]))."+1 day"));
        //echo ‘newday:‘. $newday;
        $genarray[] = $newday;
        for ($i=1;$i<7;$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[7]=date(Y-m-d,$startday);
        //echo $startday;
        for($i=6;$i>0;$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=0;$i<count($this->wdaylist);$i++)
        
            array_push($finallist,$this->minus($this->wdaylist[$i]));
        
        array_push($finallist,$this->adddays());
        return $finallist;
    

  • 测试
$cal = new mycalendar(2019,9);
$wuwa= new gencal($cal->addwday());
//$wuwa->adddays();
print_r($wuwa->gendaylist());
  • 输出结果
Array
(
    [0] => Array
        (
            [7] => 2019-09-01
            [6] => 2019-08-31
            [5] => 2019-08-30
            [4] => 2019-08-29
            [3] => 2019-08-28
            [2] => 2019-08-27
            [1] => 2019-08-26
        )

    [1] => Array
        (
            [7] => 2019-09-08
            [6] => 2019-09-07
            [5] => 2019-09-06
            [4] => 2019-09-05
            [3] => 2019-09-04
            [2] => 2019-09-03
            [1] => 2019-09-02
        )

    [2] => Array
        (
            [7] => 2019-09-15
            [6] => 2019-09-14
            [5] => 2019-09-13
            [4] => 2019-09-12
            [3] => 2019-09-11
            [2] => 2019-09-10
            [1] => 2019-09-09
        )

    [3] => Array
        (
            [7] => 2019-09-22
            [6] => 2019-09-21
            [5] => 2019-09-20
            [4] => 2019-09-19
            [3] => 2019-09-18
            [2] => 2019-09-17
            [1] => 2019-09-16
        )

    [4] => Array
        (
            [7] => 2019-09-29
            [6] => 2019-09-28
            [5] => 2019-09-27
            [4] => 2019-09-26
            [3] => 2019-09-25
            [2] => 2019-09-24
            [1] => 2019-09-23
        )

    [5] => Array
        (
            [0] => 2019-09-30
            [1] => 2019-10-01
            [2] => 2019-10-02
            [3] => 2019-10-03
            [4] => 2019-10-04
            [5] => 2019-10-05
            [6] => 2019-10-06
        )

)

 

以上是关于月球-I型,月份日历生成器----基于PHP7.3的主要内容,如果未能解决你的问题,请参考以下文章

基于jQuery的日历插件

日历返回错误的月份[重复]

一个js简单的日历显示效果的函数

用java编辑日历记事本

更改月份日历上的日期颜色

jquery打开日历到特定月份