Foros del Web » Programando para Internet » PHP »

Datediff

Estas en el tema de Datediff en el foro de PHP en Foros del Web. Hola, tengo un problemilla. Quiero insertar en la base de datos un periodo de vacaciones, donde los campos k varian son las fechas, los demas ...
  #1 (permalink)  
Antiguo 11/04/2007, 04:53
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 19 años, 5 meses
Puntos: 0
Datediff

Hola, tengo un problemilla.
Quiero insertar en la base de datos un periodo de vacaciones, donde los campos k varian son las fechas, los demas son fijos.
Por lo tanto tengo una fecha inicio y una fecha fin.
por ejemplo kiero insertar
2007/04/11 al 2007/04/15 este periodo
Insert:
FECHA HORAS PERIODO
2007/04/11 8 vacaciones
2007/04/12 8 vacaciones
2007/04/13 8 vacaciones
2007/04/14 8 vacaciones
2007/04/15 8 vacaciones

Estos datos se rellenan mediante un formulario con los campos: fechaini:2007/04/11, fechafin: 2007/04/15, horas: 8, periodo: vacaciones. Por lo tanto el formulario solo se rellena una vez, i envia tantos registros como diferencia de dias exista.
Como lo puedo acer en php.

Gracias.
  #2 (permalink)  
Antiguo 11/04/2007, 05:24
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Datediff

esto me lo encontré hace mucho, aun no lo he probado pero igual te vale:

Código PHP:
  function datediff($interval, $datefrom, $dateto, $using_timestamps = false) 
 {  
/*    $interval can be:    
 yyyy - Number of full years    
 q - Number of full quarters    
 m - Number of full months    
 y - Difference between day numbers      
 (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)    
 d - Number of full days    
 w - Number of full weekdays    
 ww - Number of full weeks    
 h - Number of full hours    
 n - Number of full minutes    
 s - Number of full seconds (default)  */    
 
if (!$using_timestamps) 
 {  
    
$datefrom = strtotime($datefrom, 0);    
    
$dateto = strtotime($dateto, 0);  
 }  
 
$difference = $dateto - $datefrom; // Difference in seconds     
 
switch($interval) {       
    case 
'yyyy': // Number of full years       
                 
$years_difference = floor($difference / 31536000);      
                 if (
mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) 
                    {        
$years_difference--;      }      
                 if (
mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) 
                 {        
$years_difference++;      }      
                 
$datediff = $years_difference;      
                 break;     
    case 
"q": // Number of full quarters       
                 
$quarters_difference = floor($difference / 8035200);      
                 while (
mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) 
                 {        
$months_difference++;      }      
                 
$quarters_difference--;      
                 
$datediff = $quarters_difference;      
                 break;     
    case 
"m": // Number of full months       
                 
$months_difference = floor($difference / 2678400);      
                 while (
mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) 
                 {        
$months_difference++;      }      
                 
$months_difference--;      
                 
$datediff = $months_difference;      
                 break;     
    case 
'y': // Difference between day numbers       
                 
$datediff = date("z", $dateto) - date("z", $datefrom);      
                 break;     
    case 
"d": // Number of full days       
                 
$datediff = floor($difference / 86400);      
                 break;     
    case 
"w": // Number of full weekdays      
                 
$days_difference = floor($difference / 86400);      
                 
$weeks_difference = floor($days_difference / 7); // Complete weeks      
                 
$first_day = date("w", $datefrom);      
                 
$days_remainder = floor($days_difference % 7);      
                 
$odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?      
                 
if ($odd_days > 7) 
                 { 
// Sunday        
                 
$days_remainder--;      
                 }      
                 if (
$odd_days > 6) 
                 { 
// Saturday        
                 
$days_remainder--;     
                 }      
                 
$datediff = ($weeks_difference * 5) + $days_remainder;      
                 break;     
    case 
"ww": // Number of full weeks       
                 
$datediff = floor($difference / 604800);      
                 break;     
    case 
"h": // Number of full hours       
                 
$datediff = floor($difference / 3600);      
                 break;     
    case 
"n": // Number of full minutes       
                 
$datediff = floor($difference / 60);      
                 break;     
    default: 
// Number of full seconds (default)       
                 
$datediff = $difference;      
                 break;  
    }       
    return 
$datediff; 
    } 
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 11/04/2007, 07:05
 
Fecha de Ingreso: abril-2007
Mensajes: 5
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Datediff

merci probare aver k tal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:52.