自学php【二】 PHP计算时间加一天
最近幾天在做一個(gè)項(xiàng)目,主要是將SQLserver數(shù)據(jù)到MySQL數(shù)據(jù)庫(kù),一個(gè)url跑一次 同步一次昨天的數(shù)據(jù),由于很多數(shù)據(jù)需要同步,所以做了一個(gè)操作界面的,一個(gè)單純跑url的
在其中涉及到了對(duì)于時(shí)間的計(jì)算!當(dāng)我寫完這個(gè)程序的時(shí)候,我回頭看我寫的計(jì)算時(shí)間的代碼。有些都有點(diǎn)兒懵了!。。。在這里記錄下來(lái)方便以后回憶,也方便別人使用!
代碼可能會(huì)臃腫!新人一枚!歡迎指正!拒絕罵街哦!
先簡(jiǎn)單說(shuō)一下代碼,其中主要涉及到計(jì)算潤(rùn)年 平年,計(jì)算28天 31天 30天月份 等,主要就是判斷!代碼中有注釋,大家看一下,希望大家多多指正缺點(diǎn)!
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 /**查詢開始的時(shí)間戳 12 * @var 13 */ 14 private $startTimeStamp; 15 16 /**查詢結(jié)束的時(shí)間戳 17 * @var 18 */ 19 private $endTimeStamp; 20 21 /-----------------------------------------------計(jì)算年月---------------------------------------------------------- 22 23 /**計(jì)算年份是否是閏年,如果是閏年 2月份是29天 平年是28天, 每調(diào)用一次這個(gè)函數(shù),天數(shù)增 加1天 24 * @return string 時(shí)間戳,是經(jīng)過(guò)計(jì)算的,前加 '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 /**根據(jù)月份是多少天,計(jì)算日期時(shí)間, 35 * @param $Feb 2月的天數(shù) 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 //如果加默認(rèn)天數(shù)大于當(dāng)前月份天數(shù),就計(jì)算月份 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月份天數(shù)不在正常范圍內(nèi)'); 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天的月份天數(shù)不在正常范圍內(nèi)'); 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天的月份天數(shù)不在正常范圍內(nèi)'); 104 } 105 106 } else { 107 // echo $this->month; 108 die('函數(shù)computeTimeDate計(jì)算年月日發(fā)生錯(cuò)誤'); 109 } 110 } 111 112 /** 113 * 計(jì)算加減月份,如果超過(guò)12 就讓年份 +1 月份恢復(fù)到1 114 * @param $D_value 差值,由于在計(jì)算天數(shù)的時(shí)候,存在加值過(guò)大,造成的重復(fù)計(jì)算,例如30+6 可能計(jì)算兩次,差值就是 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函數(shù)計(jì)算錯(cuò)誤'); 141 } 142 }寫了以上的代碼,也算了解了日期處理的一個(gè)過(guò)程!對(duì)于記憶這個(gè)函數(shù)更深刻了!~~
其實(shí)主要還是自己想寫一遍! 至少自己對(duì)函數(shù)也有一個(gè)更好的理解!
以下是用PHP代碼實(shí)現(xiàn)上面的一堆!
data( 'Y-m-d', strtotime( ' +1 days ' ) );?
轉(zhuǎn)載于:https://www.cnblogs.com/itafter/p/4202957.html
總結(jié)
以上是生活随笔為你收集整理的自学php【二】 PHP计算时间加一天的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Receiver type ‘X’ fo
- 下一篇: 微信接口开发-初级体验