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: 17 años
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: 19 años, 5 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($datefrom0);    
    
$dateto strtotime($dateto0);  
 }  
 
$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: 17 años
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 17:12.