php 计算两个日期之间的间隔天数
本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样可以精确到时分秒。
例1,直接把日期转换,代码如下:
1 2 3 4 5 6 | function daysbetweendates( $date1 , $date2 ){ $date1 = strtotime ( $date1 ); $date2 = strtotime ( $date2 ); $days = ceil ( abs ( $date1 - $date2 )/86400); return $days ; } |
例2,代码如下:
1 2 3 4 5 6 7 8 9 10 | <?php function maketime( $date ) { list( $year , $month , $day ) = explode ( '-' , $date ); return mktime (0, 0, 0, $month , $day , $year ); } $date1 = '2007-01-08' ; $date2 = '2007-03-01' ; $d = (maketime( $date2 ) - maketime( $date1 )) / (3600 * 24); echo "相差$d天" ; ?> |
例3,PHP实现两个日期间隔的年、月、周、日数的计算,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?php function format( $a , $b ) { //检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大 if ( strtotime ( $a ) > strtotime ( $b )) list( $a , $b ) = array ( $b , $a ); $start = strtotime ( $a ); $stop = strtotime ( $b ); $extend = ( $stop - $start ) / 86400; $result [ 'extends' ] = $extend ; if ( $extend < 7) { //如果小于7天直接返回天数 $result [ 'daily' ] = $extend ; } elseif ( $extend <= 31) { //小于28天则返回周数,由于闰年2月满足了 if ( $stop == strtotime ( $a . '+1 month' )) { $result [ 'monthly' ] = 1; } else { $w = floor ( $extend / 7); $d = ( $stop - strtotime ( $a . '+' . $w . ' week' )) / 86400; $result [ 'weekly' ] = $w ; $result [ 'daily' ] = $d ; } } else { $y = floor ( $extend / 365); if ( $y >= 1) { //如果超过一年 $start = strtotime ( $a . '+' . $y . 'year' ); $a = date ( 'Y-m-d' , $start ); //判断是否真的已经有了一年了,如果没有的话就开减 if ( $start > $stop ) { $a = date ( 'Y-m-d' , strtotime ( $a . '-1 month' )); $m = 11; $y --; } $extend = ( $stop - strtotime ( $a )) / 86400; } if (isset( $m )) { $w = floor ( $extend / 7); $d = $extend - $w * 7; } else { $m = isset( $m ) ? $m : round ( $extend / 30); $stop >= strtotime ( $a . '+' . $m . 'month' ) ? $m : $m --; if ( $stop >= strtotime ( $a . '+' . $m . 'month' )) { $d = $w = ( $stop - strtotime ( $a . '+' . $m . 'month' )) / 86400; $w = floor ( $w / 7); $d = $d - $w * 7; } } $result [ 'yearly' ] = $y ; $result [ 'monthly' ] = $m ; $result [ 'weekly' ] = $w ; $result [ 'daily' ] = isset( $d ) ? $d : null; } return array_filter ( $result ); } print_r(format( '2012-10-1' , '2012-12-15' )); |
本文地址:http://www.phprm.com/riqi/fs1137.html
转载随意,但请附上文章地址:-)
本文地址:http://www.phprm.com/function/42dc7f23d3cc476fe46199ab04c9d1bb.html
转载随意,但请附上文章地址:-)