在做类似OA这种项目的时候,可能会碰到计算一个员工工龄的情况,这个时候仅仅精确到年或者精确到月是不够的,下面分享一个精确到多少天的函数。可以显示为类似相隔1年25天这种形式的。
1 | <p> <br /> function diffDate( $date1 , $date2 ){<br /> if ( strtotime ( $date1 )> strtotime ( $date2 )){<br /> $tmp = $date2 ;<br /> $date2 = $date1 ;<br /> $date1 = $tmp ;<br /> }<br /> list( $Y1 , $m1 , $d1 )= explode ( '-' , $date1 );<br /> list( $Y2 , $m2 , $d2 )= explode ( '-' , $date2 );<br /> $Y = $Y2 - $Y1 ;<br /> $m = $m2 - $m1 ;<br /> $d = $d2 - $d1 ;<br /> if ( $d <0){<br /> $d +=(int) date ( 't' , strtotime ( "-1 month $date2" ));<br /> $m --;<br /> }<br /> if ( $m <0){<br /> $m +=12;<br /> $y --;<br /> }<br /> return array ( 'year' => $Y , 'month' => $m , 'day' => $d );<br /><p>}</p>
|
Copy after login
该函数使用方法如下:echo '
1 | ';print_r(diffDate(' 2012-12-1 ',' 2011-11-5'));
|
Copy after login