Jump to content

function date_range


undoprojects

Recommended Posts

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.