Foros del Web » Programando para Internet » PHP »

Sumar fechas contenidas en un Array

Estas en el tema de Sumar fechas contenidas en un Array en el foro de PHP en Foros del Web. Tengo la variable $total_parcial... que contiene un array con fechas... de tipo datetime... Lo que necesito es sumar todas las fechas de $total_parcial... Alguna idea ...
  #1 (permalink)  
Antiguo 27/06/2008, 09:23
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Sumar fechas contenidas en un Array

Tengo la variable

$total_parcial... que contiene un array con fechas... de tipo datetime...

Lo que necesito es sumar todas las fechas de $total_parcial...

Alguna idea de como hacerlo...

Gracias
  #2 (permalink)  
Antiguo 27/06/2008, 09:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sumar fechas contenidas en un Array

una idea simple.... usa un ciclo
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/06/2008, 09:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sumar fechas contenidas en un Array

Hola cmarrero,

Para sumar las fechas deberían estas ser un timestamp, posteriormente podrías hacer un array_sum para sumar las fechas.

Saludos.
  #4 (permalink)  
Antiguo 27/06/2008, 13:33
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Sumar fechas contenidas en un Array

Intente lo siguiente:

Código PHP:
$totalcount($array_fechas);
for (
$i =0$i $total$i++){
$fecha=$array_fechas[$i];
$explota=(" ",$fecha);
$fecha=$explota[0];
$sep_fecha=explode("-",$fecha);
$hora=$explota[1];
$sep_hora=explode(":",$hora);
$segundos=mktime($sep_hora[0],$sep_hora[1],$sep_hora[2],$sep_fecha[1],$sep_fecha[0],$sep_fecha[2]);
$suma+=$segundos;
}
$tiempo_total=date(Y."-".m."-".d." ".h.":".i.":".s,$suma);
echo 
$tiempo_total
Esto no funciona... he probado con otras cosas tambien y no ahi caso...

Otra cosa, he visto que las fechas contenidas en el array no todas son exactamente iguales en su formato algunas son solo horas y otras son fechas completas... debido a que el array recive los datos de sumas parciales de una consulta a la BD...

Una ayuda plisss.. gracias
  #5 (permalink)  
Antiguo 27/06/2008, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Sumar fechas contenidas en un Array

En ese caso debes de hacer algo más complejo que lo que ya expones ya que si el arreglo tiene diferentes formatos necesitas hacer un parser y un analizer que sepa reconocer las diferentes fechas y que te pueda dar un timestamp que puedas sumar.

Saludos.
  #6 (permalink)  
Antiguo 27/06/2008, 14:40
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Sumar fechas contenidas en un Array

en realidad el formato en si, es siempre el mismo, lo que cambia es que en algunos casos existe la fecha y en otros caso no....

es decir, en algunos es 0000-00-01 01:00:02

y en otros es solamente: 01:00:02

Alguien que me horiente como hacerlo...

Gracias
  #7 (permalink)  
Antiguo 27/06/2008, 17:52
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Sumar fechas contenidas en un Array

LO HE SOLUCIONADO ASI, POR SI A ALGUIEN LE INTERSA...

SALUDOS...

Código PHP:
// PRIMERO GUARDO LOS VALORES PARCIALES EN UN ARRAY...
$sql=$consultar_historial." where id_incidencia = '$id' ORDER BY h.id";
$consulta=mysql_query($sql);
$c=0;
$f=0;
$fecha_hoytime();
$fecha=date(Y."-".m."-".d." ".h.":".i.":".s,$fecha_hoy);
$fecha_cierre=0;
$fecha_pausada_parcial=0;
$fecha_abierta_parcial=0;
$total_parcial= array();
while(
$array=mysql_fetch_array($consulta)){ 
if(
$c==0){
$color="f4f4f4";
$c++;
}else{
$color="ffffff";
$c=0;
}
if (
$array[estados]=="Abierta" && $f==0){
$fecha_apertura=$array[fecha];
$f=1;
}elseif(
$array[estados]=="Pausada"){
$fecha_pausada_parcial=$array[fecha];
}elseif(
$array[estados]=="Abierta"){
$fecha_abierta_parcial=$array[fecha];
    if(
$fecha_pausada_parcial!=0){
    
$diff="SELECT TIMEDIFF('".$fecha_abierta_parcial."','".$fecha_pausada_parcial."');";
    
$consu=mysql_query($diff);
    
$parcial=mysql_fetch_array($consu);
    
$total_parcial[]=$parcial[0];
    
$fecha_pausada_parcial=0;
    }
}elseif(
$array[estados]=="Cerrada"){
$fecha_cierre=$array[fecha];
}
}
//LUEGO SUMO LOS VALORES Y HAGO LAS CONSULTAS....
if ($fecha_cierre!=0){
$fecha=$fecha_cierre;
}
$total=count($total_parcial);
if (
$total>=2){
$contador=0;
$total_fecha=0;
for (
$i=0$i $total $i++){
    if (
$contador==0){
        
$fecha_parcial=$total_parcial[$i];
        
$contador++;
        }elseif(
$total_fecha!=0){
        
$fecha_parcial=$total_parcial[$i];
        
$suma_fecha="SELECT ADDTIME('".$total_fecha."','".$fecha_parcial."')";
        
$query_fecha=mysql_query($suma_fecha);
        
$array_query_fecha=mysql_fetch_array($query_fecha);
        
$total_fecha=$array_query_fecha[0];
        }else{
        
$fecha_parcial2=$total_parcial[$i];
        
$suma_fecha="SELECT ADDTIME('".$fecha_parcial2."','".$fecha_parcial."')";
        
$query_fecha=mysql_query($suma_fecha);
        
$array_query_fecha=mysql_fetch_array($query_fecha);
        
$total_fecha=$array_query_fecha[0];
        }
}
$valor_total=$total_fecha;
}else{
$valor_total=$total_parcial[0];
}
//Consulta a la tabla incidenicas, traigo fecha carga...
$sql=$incidencias_abiertas." WHERE i.id = '$id'";
$query_respuesta=mysql_query($sql);
$array_respuesta=mysql_fetch_array($query_respuesta);
$fecha_carga=$array_respuesta[fecha_carga];

//Tiempo de Respuesta
$sql="SELECT TIMEDIFF('".$fecha_apertura."','".$fecha_carga."')";
$consulta_diferencia=mysql_query($sql);
$array_diferencia=mysql_fetch_array($consulta_diferencia);

echo 
"<strong>Tiempo de Respuesta: </strong>".$array_diferencia[0]." | ";

echo 
"<strong>Total tiempo pausado: </strong>".$valor_total." | ";

//Total de la incidencia desde la carga, hasta el cierre..
$diferencia="SELECT TIMEDIFF('".$fecha."','".$fecha_carga."')";
$queryss=mysql_query($diferencia);
$arrays=mysql_fetch_array($queryss);

//Total tiempo abierto parcial
$d="SELECT TIMEDIFF('".$fecha."','".$fecha_apertura."')";
$q=mysql_query($d);
$a=mysql_fetch_array($q);
//total tiempo abierto completo
$d1="SELECT TIMEDIFF('".$a[0]."','".$valor_total."')";
$q1=mysql_query($d1);
$a1=mysql_fetch_array($q1);
echo 
"<strong>Total tiempo abierto: </strong>".$a1[0]." | ";

echo 
"<strong>Total tiempo incidencia:</strong>".$arrays[0];
desconectar(); 
aI ALGUIEN PUEDE HACER LO MISMO DE MEJOR MANERA... AVISE, QUE ME HE ENREDADO MUCHISIMO CON ESTE CODIGO... GRACIAS...
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 05:43.