Comunidad de diseño web y desarrollo en internet online

Sumar Fechas calcular años meses días horas minutos segundos vididos

Citar            
MensajeEscrito el 09 Dic 2011 08:38 pm
Muchos se sacan los ojos tratando de sumar horas y calcular años de forma correcta.. con MySQL Este es un buen resumen de como hacelo solo cambien el nombre del campo fecha_nacimiento_c por el nombre del campo donde tengan la fecha de incio y el now() por el nombre del campo o la fecha fin para el calculo y listo,,,, espero les guste...

# Con estas formulas se puede calcular el tiempo en años, meses, semanas, dias, horas, minutos y segundos entre
# dos fechas en formato TIMESTAMP sin importar la cantidad de años entre la fecha inicial y la final
# es bastante util para el manejo de tiempos ya que si uno pasa todo a segundo de alli los puede convertir a lo que requiera.
select apellidos_c
,TIMESTAMP(fecha_nacimiento_c) AS DOB
,TIMESTAMP(NOW()) AS Hoy
,TIMESTAMPDIFF(YEAR,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Años
,TIMESTAMPDIFF(MONTH,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Meses
,TIMESTAMPDIFF(WEEK,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Semanas
,TIMESTAMPDIFF(DAY,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Dias
,TIMESTAMPDIFF(HOUR,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Horas
,TIMESTAMPDIFF(MINUTE,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Minutos
,TIMESTAMPDIFF(SECOND,TIMESTAMP(fecha_nacimiento_c),TIMESTAMP(now())) as Segundos
#Este saca la deferencia fecha final y fecha inicial hasta maximo 838:59:59
#Entre las dos fechas maximo un mes mas o menos más de eso no sirve pilas..
#En el ejemplo si entra '2011-11-09 08:06:15' y sale '2011-11-20 12:36:45' lleva 268 horas 30 y 30 #segundos.
,TIMEDIFF('2011-11-20 12:36:45','2011-11-09 08:06:15') AS Tiempo
from nobre_tabla
#Con este ejemplo le calculo los años, meses.... a todos los clientes... hasta los segundos #vividos que tengan...

Por Hernan Arboleda

0 de clabLevel



 

msie8
Citar            
MensajeEscrito el 01 Feb 2012 05:03 pm
Aquí les dejo una colección de funciones desarrolladas para manejar fechas

Código PHP :

//recibe un $date del tipo yyyy-mm-dd e imprime: (dia) de (mes) del (año)
function fecha($date){
   $fecha=array('dia','mes','anio');
   $date=explode("-",$date);
   $fecha['dia']=$date[2];
   $fecha['mes']=$date[1];
   $fecha['anio']=$date[0];
   if($fecha['mes']=="01"){$mes="Enero";}
   if($fecha['mes']=="02"){$mes="Febrero";}
   if($fecha['mes']=="03"){$mes="Marzo";}
   if($fecha['mes']=="04"){$mes="Abril";}
   if($fecha['mes']=="05"){$mes="Mayo";}
   if($fecha['mes']=="06"){$mes="Junio";}
   if($fecha['mes']=="07"){$mes="Julio";}
   if($fecha['mes']=="08"){$mes="Agosto";}
   if($fecha['mes']=="09"){$mes="Septiembre";}
   if($fecha['mes']=="10"){$mes="Octubre";}
   if($fecha['mes']=="11"){$mes="Noviembre";}
   if($fecha['mes']=="12"){$mes="Diciembre";}
   $strfecha=$fecha['dia']." de ".$mes." de ".$fecha['anio'];
   return $strfecha;
}

//recibe un datetime del tipo yyyy-mm-dd hh:mm:ss e imprime: (dia) de (mes) de (año) a las (horas:minutos:segundos)
function fechaHora($datetime){

   $fecha=array('dia','mes','anio','hora');
   $separado=array('date','hora');
   $datetime=explode(" ",$datetime);
   $separado['date']=$datetime[0];
   $separado['hora']=$datetime[1];
   $date=explode("-",$separado['date']);
   $fecha['hora']=$separado['hora'];
   $fecha['dia']=$date[2];
   $fecha['mes']=$date[1];
   $fecha['anio']=$date[0];
   if($fecha['mes']=="01"){$mes="Enero";}
   if($fecha['mes']=="02"){$mes="Febrero";}
   if($fecha['mes']=="03"){$mes="Marzo";}
   if($fecha['mes']=="04"){$mes="Abril";}
   if($fecha['mes']=="05"){$mes="Mayo";}
   if($fecha['mes']=="06"){$mes="Junio";}
   if($fecha['mes']=="07"){$mes="Julio";}
   if($fecha['mes']=="08"){$mes="Agosto";}
   if($fecha['mes']=="09"){$mes="Septiembre";}
   if($fecha['mes']=="10"){$mes="Octubre";}
   if($fecha['mes']=="11"){$mes="Noviembre";}
   if($fecha['mes']=="12"){$mes="Diciembre";}
   $strfecha=$fecha['dia']." de ".$mes." de ".$fecha['anio']." a las ".$fecha['hora'];
   return $strfecha;
}

//recibe un datetime del tipo yyyy-mm-dd hh:mm:ss e imprime: (dia) de (mes) de (año)
function fechaDatetime($datetime){

   $fecha=array('dia','mes','anio','hora');
   $separado=array('date','hora');
   $datetime=explode(" ",$datetime);
   $separado['date']=$datetime[0];
   $separado['hora']=$datetime[1];
   $date=explode("-",$separado['date']);
   $fecha['hora']=$separado['hora'];
   $fecha['dia']=$date[2];
   $fecha['mes']=$date[1];
   $fecha['anio']=$date[0];
   if($fecha['mes']=="01"){$mes="Enero";}
   if($fecha['mes']=="02"){$mes="Febrero";}
   if($fecha['mes']=="03"){$mes="Marzo";}
   if($fecha['mes']=="04"){$mes="Abril";}
   if($fecha['mes']=="05"){$mes="Mayo";}
   if($fecha['mes']=="06"){$mes="Junio";}
   if($fecha['mes']=="07"){$mes="Julio";}
   if($fecha['mes']=="08"){$mes="Agosto";}
   if($fecha['mes']=="09"){$mes="Septiembre";}
   if($fecha['mes']=="10"){$mes="Octubre";}
   if($fecha['mes']=="11"){$mes="Noviembre";}
   if($fecha['mes']=="12"){$mes="Diciembre";}
   $strfecha=$fecha['dia']." de ".$mes." de ".$fecha['anio'];
   return $strfecha;
}

//recibe un datetime del tipo yyyy-mm-dd hh:mm:ss e imprime: (yyyy-mm-dd)
function fechaDatetimeADate($datetime){

   $fecha=array('dia','mes','anio','hora');
   $separado=array('date','hora');
   $datetime=explode(" ",$datetime);
   $separado['date']=$datetime[0];
   $strfecha=$separado['date'];
   return $strfecha;
}

//recibe un datetime del tipo yyyy-mm-dd hh:mm:ss e imprime: (horas:minutos:segundos)
function horaDatetime($datetime){

   $fecha=array('dia','mes','anio','hora');
   $separado=array('date','hora');
   $datetime=explode(" ",$datetime);
   $separado['date']=$datetime[0];
   $separado['hora']=$datetime[1];
   $fecha['hora']=$separado['hora'];
   $fecha['dia']=$date[2];
   $fecha['mes']=$date[1];
   $fecha['anio']=$date[0];
   $strHora=$fecha['hora'];
   return $strHora;
}

//función para restar días
function restarDias($days)
{  
   return date("Y-m-d h:i:s", mktime (0,0,0,date("m"),date("d")-$days,date("Y")));
} 


/**
* Calcula la diferencia para dos fechas dadas, y retorna el resultado en una unidad especificada
*
* @param string Initial date (format: [YYYY-mm-dd hh:mm:ss], hh es en formato 24hrs )
* @param string Last date (format: [YYYY-mm-dd hh:mm:ss], hh es en formato 24hrs)
* @param caracter 'd' para obtener el resultado en días, 'h' para horas, 'm' para minutos, 's' para segundos, y 'a' para obtener un arreglo indexado de días, horas, minutos, y segundos
*
* @return mixed El resultado en la unidad especificada (float para todos los casos, excepto cuando unit='a', en el cual es un arreglo indexado), o nulo si no podría ser obtenido
*/
function obtenerDifereciaDeFechas($dateFrom, $dateTo, $unit = 'd'){
   $difference = null;
    
   $dateFromElements = split(' ', $dateFrom);
   $dateToElements = split(' ', $dateTo);
    
   $dateFromDateElements = split('-', $dateFromElements[0]);
   $dateFromTimeElements = split(':', $dateFromElements[1]);
   $dateToDateElements = split('-', $dateToElements[0]);
   $dateToTimeElements = split(':', $dateToElements[1]);
    
   // Obtiene timestamp de unix para ambos datos
    
   $date1 = mktime($dateFromTimeElements[0], $dateFromTimeElements[1], $dateFromTimeElements[2], $dateFromDateElements[1], $dateFromDateElements[2], $dateFromDateElements[0]);
   $date2 = mktime($dateToTimeElements[0], $dateToTimeElements[1], $dateToTimeElements[2], $dateToDateElements[1], $dateToDateElements[2], $dateToDateElements[0]);
    
   if( $date1 > $date2 ){
      return null;
   }
    
   $diff = $date2 - $date1;
    
   $days = 0;
   $hours = 0;
   $minutes = 0;
   $seconds = 0;
    
   if ($diff % 86400 <= 0){ // Hay 86,400 seconds en un día
      $days = $diff / 86400;
   }
    
   if($diff % 86400 > 0){
      $rest = ($diff % 86400);
      $days = ($diff - $rest) / 86400;
       
      if( $rest % 3600 > 0 ){
         $rest1 = ($rest % 3600);
         $hours = ($rest - $rest1) / 3600;
          
         if( $rest1 % 60 > 0 ){
            $rest2 = ($rest1 % 60);
            $minutes = ($rest1 - $rest2) / 60;
            $seconds = $rest2;
         }
         else{
            $minutes = $rest1 / 60;
         }
      }
      else{
         $hours = $rest / 3600;
      }
   }
    
   switch($unit){
      case 'd':
      case 'D':
       
         $partialDays = 0;
         $partialDays += ($seconds / 86400);
         $partialDays += ($minutes / 1440);
         $partialDays += ($hours / 24);
         $difference = $days + $partialDays;
         break;
       
      case 'h':
      case 'H':
       
         $partialHours = 0;
          
         $partialHours += ($seconds / 3600);
         $partialHours += ($minutes / 60);
         $difference = $hours + ($days * 24) + $partialHours;
         break;
       
      case 'm':
      case 'M':
       
         $partialMinutes = 0;
         $partialMinutes += ($seconds / 60);
         $difference = $minutes + ($days * 1440) + ($hours * 60) + $partialMinutes;
         break;
       
      case 's':
      case 'S':
       
         $difference = $seconds + ($days * 86400) + ($hours * 3600) + ($minutes * 60);
         break;
       
      case 'a':
      case 'A':
       
         $difference = array (
            "days" => $days,
            "hours" => $hours,
            "minutes" => $minutes,
            "seconds" => $seconds
         );
         break;
   }
   return $difference;
}

//recibe un datetime del tipo yyyy-mm-dd hh:mm:ss e imprime: (dia) de (mes) de (año)
function fechaDatetimePlus1Mes($datetime){

   $fecha=array('dia','mes','anio','hora');
   $separado=array('date','hora');
   $datetime=explode(" ",$datetime);
   $separado['date']=$datetime[0];
   $separado['hora']=$datetime[1];
   $date=explode("-",$separado['date']);
   $fecha['hora']=$separado['hora'];
   $fecha['dia']=$date[2];
   $fecha['mes']=$date[1];
   $fecha['anio']=$date[0];
   if($fecha['mes']=="01"){
      if($fecha['dia']==29||$fecha['dia']==30||$fecha['dia']==31){
         $mes="Marzo";
         $fecha['dia']=1;
      }
      else{
         $mes="Febrero";
      }
   }
   if($fecha['mes']=="02"){$mes="Marzo";}
   if($fecha['mes']=="03"){
      if($fecha['dia']==31){
         $mes="Mayo";
         $fecha['dia']=1;
      }
      else{
         $mes="Abril";
      }
   }
   if($fecha['mes']=="04"){$mes="Mayo";}
   if($fecha['mes']=="05"){
      if($fecha['dia']==31){
         $mes="Julio";
         $fecha['dia']=1;
      }
      else{
         $mes="Junio";
      }
   }
   if($fecha['mes']=="06"){$mes="Julio";}
   if($fecha['mes']=="07"){$mes="Agosto";}
   if($fecha['mes']=="08"){
      if($fecha['dia']==31){
         $mes="Octubre";
         $fecha['dia']=1;
      }
      else{
         $mes="Septiembre";
      }
   }
   if($fecha['mes']=="09"){$mes="Octubre";}
   if($fecha['mes']=="10"){
      if($fecha['dia']==31){
         $mes="Diciembre";
         $fecha['dia']=1;
      }
      else{
         $mes="Noviembre";
      }
   }
   if($fecha['mes']=="11"){$mes="Diciembre";}
   if($fecha['mes']=="12"){$mes="Enero";}
   $strfecha=$fecha['dia']." de ".$mes." de ".$fecha['anio'];
   return $strfecha;
}


function dia($date){
$fecha=array('dia1','mes1','anio1');
$date=explode("-",$date);
   $fecha['dia1']=$date[2];
    $strdia=$fecha['dia1'];
    return $strdia;
}
function mes3($date){
$fecha2=array('dia3','mes3','anio3');
   $date=explode("-",$date);
   $fecha3['dia3']=$date[2];
   $fecha3['mes3']=$date[1];
   $fecha3['anio3']=$date[0];
   if($fecha3['mes3']=="01"){$mes3="Enero";}
   if($fecha3['mes3']=="02"){$mes3="Febrero";}
   if($fecha3['mes3']=="03"){$mes3="Marzo";}
   if($fecha3['mes3']=="04"){$mes3="Abril";}
   if($fecha3['mes3']=="05"){$mes3="Mayo";}
   if($fecha3['mes3']=="06"){$mes3="Junio";}
   if($fecha3['mes3']=="07"){$mes3="Julio";}
   if($fecha3['mes3']=="08"){$mes3="Agosto";}
   if($fecha3['mes3']=="09"){$mes3="Septiembre";}
   if($fecha3['mes3']=="10"){$mes3="Octubre";}
   if($fecha3['mes3']=="11"){$mes3="Noviembre";}
   if($fecha3['mes3']=="12"){$mes3="Diciembre";}
   $strmes3=$mes3;
   return $strmes3;
}
function anio($date){
$fecha=array('dia1','mes1','anio1');
$date=explode("-",$date);
     $fecha['anio1']=$date[0];
    $stranio=$fecha['anio1'];
    return $stranio;
}

function restaFechas($dFecIni, $dFecFin){
$dFecIni = str_replace("-","",$dFecIni);
$dFecIni = str_replace("/","",$dFecIni);
$dFecFin = str_replace("-","",$dFecFin);
$dFecFin = str_replace("/","",$dFecFin);

ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecIni, $aFecIni);
ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecFin, $aFecFin);

$date1 = mktime(0,0,0,$aFecIni[2], $aFecIni[1], $aFecIni[3]);
$date2 = mktime(0,0,0,$aFecFin[2], $aFecFin[1], $aFecFin[3]);

return round(($date2 - $date1) / (60 * 60 * 24));
}

function sumaFechas($dFecIni, $dFecFin){
$dFecIni = str_replace("-","",$dFecIni);
$dFecIni = str_replace("/","",$dFecIni);
$dFecFin = str_replace("-","",$dFecFin);
$dFecFin = str_replace("/","",$dFecFin);

ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecIni, $aFecIni);
ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecFin, $aFecFin);

$date1 = mktime(0,0,0,$aFecIni[2], $aFecIni[1], $aFecIni[3]);
$date2 = mktime(0,0,0,$aFecFin[2], $aFecFin[1], $aFecFin[3]);

return round(($date2 + $date1) / (60 * 60 * 24));
}

function restarFechas($date1, $date2){

   $s = strtotime($date1)-strtotime($date2);
   $d = intval($s/86400);
   $s -= $d*86400;
   $h = intval($s/3600);
   $s -= $h*3600;
   $m = intval($s/60);
   $s -= $m*60;

   $dif= (($d*24)+$h).hrs." ".$m."min";
   $dif2= $d.$space.dias." ".$h.hrs." ".$m."min";

return $dif2*(-1);
}

function RestarHoras($horaini,$horafin)
{
    $horai=substr($horaini,0,2);
    $mini=substr($horaini,3,2);
    //$segi=substr($horaini,6,2);
 
    $horaf=substr($horafin,0,2);
    $minf=substr($horafin,3,2);
    //$segf=substr($horafin,6,2);
 
    $ini=((($horai*60)*60)+($mini*60)/*+$segi*/);
    $fin=((($horaf*60)*60)+($minf*60)/*+$segf*/);
 
    $dif=$fin-$ini;
 
    $difh=floor($dif/3600);
    $difm=floor(($dif-($difh*3600))/60);
    //$difs=$dif-($difm*60)-($difh*3600);
    return date("H:i",mktime($difh,$difm));
    //return date("H-i-s",mktime($difh,$difm,$difs));
}

function sumaMesesAFechaActual($cantidadDeMeses){
   $fecha = date("Y-m-d");
   $enunmes = explode ( "-", $fecha );
   //echo $fecha."<br/>";
   $sumaMeses = mktime ( 0, 0, 0, date("$enunmes[1]") + $cantidadDeMeses, date("$enunmes[2]"), date("$enunmes[0]") );
   $total=date ("Y-m-d", $sumaMeses);
   return $total;
}
function sumaDiasAFechaActual($cantidadDeDias){
   $fecha = date("Y-m-d");
   $enNdias = explode ( "-", $fecha );
   //echo $fecha."<br/>";
   $sumaDias = mktime ( 0, 0, 0, date("$enNdias[1]"), date("$enNdias[2]") + $cantidadDeDias, date("$enNdias[0]") );
   $total=date ("Y-m-d", $sumaDias);
   return $total;
}

function restaDiasAFechaActual($cantidadDeDias){
   $fecha = date("Y-m-d");
   $enNdias = explode ( "-", $fecha );
   //echo $fecha."<br/>";
   $sumaDias = mktime ( 0, 0, 0, date("$enNdias[1]"), date("$enNdias[2]") - $cantidadDeDias, date("$enNdias[0]") );
   $total=date ("Y-m-d", $sumaDias);
   return $total;
}

function sumaDiasAFechaDatetime($cantidadDeDias,$datetime){
   $datetime=explode(" ",$datetime);
   $fecha=$datetime[0];
   $enNdias = explode ( "-", $fecha );
   //echo $fecha."<br/>";
   $sumaDias = mktime ( 0, 0, 0, date("$enNdias[1]"), date("$enNdias[2]") + $cantidadDeDias, date("$enNdias[0]") );
   $total=date ("Y-m-d", $sumaDias);
   return $total;
}

function diferenciaEntreDatetimes($dt1,$dt2){
    $y1 = substr($dt1,0,4);
    $m1 = substr($dt1,5,2);
    $d1 = substr($dt1,8,2);
    $h1 = substr($dt1,11,2);
    $i1 = substr($dt1,14,2);
    $s1 = substr($dt1,17,2);   

    $y2 = substr($dt2,0,4);
    $m2 = substr($dt2,5,2);
    $d2 = substr($dt2,8,2);
    $h2 = substr($dt2,11,2);
    $i2 = substr($dt2,14,2);
    $s2 = substr($dt2,17,2);   

    $r1=date('U',mktime($h1,$i1,$s1,$m1,$d1,$y1));
    $r2=date('U',mktime($h2,$i2,$s2,$m2,$d2,$y2));
    return ($r1-$r2);
}

Por carlosteranviteri

16 de clabLevel



Genero:Masculino  

Quito - Ecuador

firefox
Citar            
MensajeEscrito el 02 Feb 2012 08:39 pm
No te quiebres la cabeza, si lo unico que quieres es saber " hace cuanto tiempo" usa la libreria
timeago es una libreria JQUERY que te permite calcular hace cuanto tiempo atras fue creado algo
Modo de uso :
Ejemplo:

Código :

Ryan was born 33 years ago.


se llaman los scripts

Código :

<script src="jquery.min.js" type="text/javascript"></script>
<script src="jquery.timeago.js" type="text/javascript"></script
>

creamos la funcion

Código :

jQuery(document).ready(function() {
  jQuery("abbr.timeago").timeago();
});



Listo !! solo usas el siguiente TAG en tu html

Código HTML :

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>


el modo de usar junto con php seria asi:

Código :

<script>
jQuery(document).ready(function() {
  jQuery("time.timeago").timeago();
});
</script>

<script>
// Spanish
jQuery.timeago.settings.strings = {
   prefixAgo: "hace",
   prefixFromNow: "dentro de",
   suffixAgo: "",
   suffixFromNow: "",
   seconds: "menos de un minuto",
   minute: "un minuto",
   minutes: "unos %d minutos",
   hour: "una hora",
   hours: "%d horas",
   day: "un dia",
   days: "%d dias",
   month: "un mes",
   months: "%d meses",
   year: "un año",
   years: "%d años"
};
</script>   


y sacando tu query :

Código PHP :

<abbr class="timeago" title="<?php echo $rsEmp["hora_falla"]; ?>">(Tiempo atras)</abbr>
<!-- timeago.js sustituye (Tiempo atras)  por Y/M/M/SS dependiendo del tiempo -->


Descarga el script : http://timeago.yarp.com

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.