hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
18 de Noviembre de 2008, 11:15:44
Noticias: Caracteres maximos de las firmas
Para ver este enlace Registrate o Inicia Sesion
> leer

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Php (Moderador: shevchenko)
| | | |-+  Calcular el tiempo exacto entre dos fechas
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Calcular el tiempo exacto entre dos fechas  (Leído 178 veces)
shevchenko
Moderador
*****
Desconectado Desconectado

Mensajes: 926


Lo importante no es ganar sino hacer perder alotro


Ver Perfil WWW
« : 11 de Julio de 2008, 07:29:59 »

Veamos este algoritmo para calcular los años, meses y días entre dos fechas dadas. No comprobaremos si las fechas entradas son correctas.

Primero especificaremo s las dos fechas (Las fechas deberán tener el formato dd/mm/aaaa para que el programa funcione correctamente).

Código:
   1. $fechaInicio ="28/02/1999"; 
   2. $fechaActual = "29/02/2000"; 

Cortamos el texto para seleccionar el dia, mes y año de la fecha Actual y de la fecha de Inicio respectivament e con la función substr de php.
Código:
copiar a portapapelesimprimir

   1. $diaActual = substr($fechaActual, 0, 2); 
   2. $mesActual = substr($fechaActual, 3, 5); 
   3. $anioActual = substr($fechaActual, 6, 10); 
   4. $diaInicio = substr($fechaInicio, 0, 2); 
   5. $mesInicio = substr($fechaInicio, 3, 5); 
   6. $anioInicio = substr($fechaInicio, 6, 10); 

Ahora utilizaremos una variable auxiliar donde guardaremos el número de días que tiene el mes anterior al mes Inicio. Tendremos en cuenta también el mes de febrero, para calcular si un año es bisiesto utilizaremos la condición ($anioActual%4==0 && $anioActual%100!=0) || $anioActual%400==0
Código:
   1. $b = 0; 
   2. $mes = $mesInicio-1; 
   3. if($mes==2){ 
   4. if(($anioActual%4==0 && $anioActual%100!=0) || $anioActual%400==0){ 
   5. $b = 29; 
   6. }else{ 
   7. $b = 28; 
   8. } 
   9. } 
  10. else if($mes<=7){ 
  11. if($mes==0){ 
  12.  $b = 31; 
  13. } 
  14.   else if($mes%2==0){ 
  15.   $b = 30; 
  16.   } 
  17.   else{ 
  18.   $b = 31; 
  19.   } 
  20.   } 
  21.   else if($mes>7){ 
  22.   if($mes%2==0){ 
  23.   $b = 31; 
  24.   } 
  25.   else{ 
  26.   $b = 30; 
  27.   } 
  28.   } 

 Seguimos con el código que calculará los días, meses y años:
Código:
   1. if(($anioInicio>$anioActual) || ($anioInicio==$anioActual && $mesInicio>$mesActual) ||   
   2.  ($anioInicio==$anioActual && $mesInicio == $mesActual && $diaInicio>$diaActual)){ 
   3.  echo "La fecha de inicio ha de ser anterior a la fecha Actual"; 
   4.  }else{ 
   5.  if($mesInicio <= $mesActual){ 
   6.  $anios = $anioActual - $anioInicio; 
   7.  if($diaInicio <= $diaActual){ 
   8.  $meses = $mesActual - $mesInicio; 
   9.  $dies = $diaActual - $diaInicio; 
  10.  }else{ 
  11.  if($mesActual == $mesInicio){ 
  12.  $anios = $anios - 1; 
  13.  } 
  14.  $meses = ($mesActual - $mesInicio - 1 + 12) % 12; 
  15.  $dies = $b-($diaInicio-$diaActual); 
  16.  } 
  17.  }else{ 
  18.  $anios = $anioActual - $anioInicio - 1; 
  19.  if($diaInicio > $diaActual){ 
  20.  $meses = $mesActual - $mesInicio -1 +12; 
  21.  $dies = $b - ($diaInicio-$diaActual); 
  22.  }else{ 
  23.  $meses = $mesActual - $mesInicio + 12; 
  24.  $dies = $diaActual - $diaInicio; 
  25.  } 
  26.  } 
  27.  echo "Años: ".$anios." <br />"; 
  28.  echo "Meses: ".$meses." <br />"; 
  29.  echo "Días: ".$dies." <br />"; 
  30.  } 

Código Completo
Código:
<?php $fechaInicio ="28/02/1999";
$fechaActual "29/02/2000";
  
$diaActual substr($fechaActual02);
$mesActual substr($fechaActual35);
$anioActual substr($fechaActual610);
$diaInicio substr($fechaInicio02);
$mesInicio substr($fechaInicio35);
$anioInicio substr($fechaInicio610);
  
$b 0;
$mes $mesInicio-1;
if(
$mes==2){
if((
$anioActual%4==&& $anioActual%100!=0) || $anioActual%400==0){
$b 29;
}else{
$b 28;
}
}
else if(
$mes<=7){
if(
$mes==0){
 
$b 31;
}
  else if(
$mes%2==0){
  
$b 30;
  }
  else{
  
$b 31;
  }
  }
  else if(
$mes>7){
  if(
$mes%2==0){
  
$b 31;
  }
  else{
  
$b 30;
  }
  }
   if((
$anioInicio>$anioActual) || ($anioInicio==$anioActual && $mesInicio>$mesActual) || 
  (
$anioInicio==$anioActual && $mesInicio == $mesActual && $diaInicio>$diaActual)){
  echo 
"La fecha de inicio ha de ser anterior a la fecha Actual";
  }else{
  if(
$mesInicio <= $mesActual){
  
$anios $anioActual $anioInicio;
  if(
$diaInicio <= $diaActual){
  
$meses $mesActual $mesInicio;
  
$dies $diaActual $diaInicio;
  }else{
  if(
$mesActual == $mesInicio){
  
$anios $anios 1;
  }
  
$meses = ($mesActual $mesInicio 12) % 12;
  
$dies $b-($diaInicio-$diaActual);
  }
  }else{
  
$anios $anioActual $anioInicio 1;
  if(
$diaInicio $diaActual){
  
$meses $mesActual $mesInicio -+12;
  
$dies $b - ($diaInicio-$diaActual);
  }else{
  
$meses $mesActual $mesInicio 12;
  
$dies $diaActual $diaInicio;
  }
  }
  echo 
"Años: ".$anios." <br />";
  echo 
"Meses: ".$meses." <br />";
  echo 
"Días: ".$dies." <br />";
  }
?>


fuente: webtutoriales
En línea



Para ver este enlace Registrate o Inicia Sesion


Para ver este enlace Registrate o Inicia Sesion
Aprende C++ ( 29 Videotutoriale s )
   
Para ver este enlace Registrate o Inicia Sesion
Consejos Web
 
Para ver este enlace Registrate o Inicia Sesion
F.A.Q-Temas Importantes sobre PHP


Para ver este enlace Registrate o Inicia Sesion
FAQ - Temas Importantes sobre ASP
   
Para ver este enlace Registrate o Inicia Sesion
Lista de Script de ASP

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online