自学php找工作【二】 PHP计算时间加一天

最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的

在其中涉及到了对于时间的计算!当我写完这个程序的时候,我回头看我写的计算时间的代码。有些都有点儿懵了!。。。在这里记录下来方便以后回忆,也方便别人使用!

代码可能会臃肿!新人一枚!欢迎指正!拒绝骂街哦!

先简单说一下代码,其中主要涉及到计算润年 平年,计算28天 31天 30天月份 等,主要就是判断!代码中有注释,大家看一下,希望大家多多指正缺点!

  1  /**一年中的31天的月份
  2      * @var array
  3      */
  4     private $month_31 = array(1,3,5,7,8,10,12);
  5 
  6     /**一年中30天的月份
  7      * @var array
  8      */
  9     private $month_30 = array(4,6,9,11);
 10 
 11     /**查询开始的时间戳
 12      * @var
 13      */
 14     private $startTimeStamp;
 15 
 16     /**查询结束的时间戳
 17      * @var
 18      */
 19     private $endTimeStamp;
 20 
 21     /-----------------------------------------------计算年月----------------------------------------------------------
 22 
 23     /**计算年份是否是闰年,如果是闰年 2月份是29天  平年是28天, 每调用一次这个函数,天数增 加1天
 24      * @return string  时间戳,是经过计算的,前加 ‘00‘  后加‘000‘ 
 25      */
 26     private function computeTime() {
 27         if (($this->year % 4 == 0 && $this->year % 100 != 0) || ($this->year % 400 == 0)) {
 28             $this->computeTimeDate(29);
 29         } else {
 30             $this->computeTimeDate(28);
 31         }
 32     }
 33 
 34     /**根据月份是多少天,计算日期时间,
 35      * @param $Feb  2月的天数
 36      */
 37     private function computeTimeDate($Feb) {
 38 
 39         if ($this->month == 2) {
 40 
 41             if($this->date >= 1 && $this->date <= $Feb) {
 42 
 43                 $this->date = $this->date + $this->syncNumDate;
 44                 //如果加默认天数大于当前月份天数,就计算月份
 45                 if( $this->date + $this->syncNumDate > $Feb ) {
 46                     $this->computeDateMonth();
 47                 }
 48 
 49             } else if($this->date > $Feb) {
 50 
 51                 $D_value = $this->syncNumDate - ($Feb - $this->date);
 52                 if( $D_value != 0 ) {
 53                     $this->computeDateMonth($D_value);
 54                 } else {
 55                     $this->computeDateMonth();
 56                 }
 57 
 58             } else {
 59                 die(‘2月份天数不在正常范围内‘);
 60             }
 61 
 62         } else if( in_array($this->month, $this->month_30) ) {
 63 
 64             if( $this->date >= 1 && $this->date < 30 ) {
 65 
 66                 $this->date = $this->date + $this->syncNumDate;
 67                 if( $this->date + $this->syncNumDate > 30 ) {
 68                     $this->computeDateMonth();
 69                 }
 70 
 71             } else if($this->date >= 30){
 72 
 73                 $D_value = $this->syncNumDate - (30 - $this->date);
 74                 if( $D_value != 0 ) {
 75                     $this->computeDateMonth($D_value);
 76                 } else {
 77                     $this->computeDateMonth();
 78                 }
 79 
 80             } else {
 81                 die(‘30天的月份天数不在正常范围内‘);
 82             }
 83 
 84         } else if(in_array($this->month, $this->month_31)) {
 85 
 86             if( $this->date >= 1 && $this->date < 31 ) {
 87 
 88                 $this->date = $this->date + $this->syncNumDate;
 89                 if( $this->date + $this->syncNumDate > 31 ) {
 90                     $this->computeDateMonth();
 91                 }
 92 
 93             } else if( $this->date >= 31 ){
 94 
 95                 $D_value = $this->syncNumDate - (31 - $this->date);
 96                 if( $D_value != 0 ) {
 97                     $this->computeDateMonth($D_value);
 98                 } else {
 99                     $this->computeDateMonth();
100                 }
101 
102             } else {
103                 die(‘31天的月份天数不在正常范围内‘);
104             }
105 
106         } else {
107 //            echo $this->month;
108             die(‘函数computeTimeDate计算年月日发生错误‘);
109         }
110     }
111 
112     /**
113      * 计算加减月份,如果超过12 就让年份 +1 月份恢复到1
114      * @param $D_value   差值,由于在计算天数的时候,存在加值过大,造成的重复计算,例如30+6 可能计算两次,差值就是 30+1 剩下的5天,在新的月份添加
115      */
116     private function computeDateMonth($D_value=‘‘) {
117         if($this->month >= 1 && $this->month < 12) {
118             $this->month = $this->month + 1;
119 
120             if( $D_value != ‘‘ ) {
121                 $this->date = $D_value;
122             } else {
123                 $this->date = 1;
124             }
125         } else if($this->month == 12) {
126             if( $this->year == date(‘Y‘, time()) ) {
127                return;
128             } else {
129                 $this->year = $this->year + 1;
130                 $this->month = 1;
131 
132                 if( $D_value != ‘‘ ) {
133                     $this->date = $D_value;
134                 } else {
135                     $this->date = 1;
136                 }
137 //                $this->computeTime();
138             }
139         } else {
140             die(‘computeDateMonth函数计算错误‘);
141         }
142     }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。