undoprojects Posted November 13, 2009 Share Posted November 13, 2009 Dear Friend, i have a problem in this function it error in counting how many day that i input, any body can help me to fix it <? function date_range( $sv, $ev ) { $data = array ( 'months' => 0, 'days' => array (), 'years' => 0 ); if ( $sv[2] != $ev[2] ) { for ( $i = $sv[0]; $i <= 12; $i++ ) { $at = gmmktime ( 0, 0, 0, $i, 1, $sv[2] ); if ( $i == $sv[0]) { $sd = array ( gmdate ( 't', $at ), $sv[1] ); } else { if ( ( $data['months'] + 1 ) == 12 ) { $data['years'] += 1; $data['months'] = 0; } else { $data['months'] += 1; } } } $ty = ( $sv[2] + 1 ); while ( $ty != $ev[2] ) { $data['years'] += 1; $ty += 1; } for ( $i = 1; $i <= $ev[0]; $i++ ) { $at = gmmktime ( 0, 0, 0, $i, 1, $ev[2] ); if ( $i == $ev[0]) { $ed = array ( gmdate ( 't', $at ), $ev[1] ); } else { if ( ( $data['months'] + 1 ) == 12 ) { $data['years'] += 1; $data['months'] = 0; } else { $data['months'] += 1; } } } if ( $ed[1] > ( $sd[0] - $sd[1] ) ) { if ( ( $data['months'] + 1 ) == 12 ) { $data['years'] += 1; $data['months'] = 0; } else { $data['months'] += 1; } $data['days'] = ( $ed[1] - ( $sd[0] - $sd[1] ) ); } else { $data['days'] = ( ( $sd[0] - $sd[1] ) + $ed[1] ); } } else { if ( $sv[0] == $ev[0] ) { $data['days'] = ( $ev[1] - $sv[1] ); } else { for ( $i = $sv[0]; $i <= $ev[0]; $i++ ) { $at = gmmktime ( 0, 0, 0, $i, 1, $sv[2] ); if ( $i == $sv[0]) { $sd = array ( gmdate ( 't', $at ), $sv[1] ); } else if ( $i == $ev[0]) { $ed = array ( gmdate ( 't', $at ), $ev[1] ); } else { if ( ( $data['months'] + 1 ) == 12 ) { $data['years'] += 1; $data['months'] = 0; } else { $data['months'] += 1; } } } if ( $ed[1] > ( $sd[0] - $sd[1] ) ) { if ( ( $data['months'] + 1 ) == 12 ) { $data['years'] += 1; $data['months'] = 0; } else { $data['months'] += 1; } $data['days'] = ( $ed[1] - ( $sd[0] - $sd[1] ) ); } else { $data['days'] = ( ( $sd[0] - $sd[1] ) + $ed[1] ); } } } return ($data); } $start = $attributes['start']; $end = $attributes['end']; $one = $start; $two = $end; $one = explode( '-', $one ); $two = explode( '-', $two ); $out = date_range( array ( $one[1], $one[0], $one[2] ), array ( $two[1], $two[0], $two[2] ) ); echo $out['days']; //print_r($out); //die($start." - ".$end); ?> Link to comment https://forums.phpfreaks.com/topic/181330-function-date_range/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.