Foros del Web » Programando para Internet » PHP »

problema con fecha :(

Estas en el tema de problema con fecha :( en el foro de PHP en Foros del Web. Estoy usando el siguiente codigo: Código PHP: $date1 = "2004-05-21" ; $date2 = "2003-03-19" ; $s  =  strtotime ( $date1 )- strtotime ( $date2 ); ...
  #1 (permalink)  
Antiguo 29/08/2005, 20:43
Avatar de chechun  
Fecha de Ingreso: diciembre-2001
Ubicación: Córdoba - Capital - Alber
Mensajes: 348
Antigüedad: 22 años, 3 meses
Puntos: 0
problema con fecha :(

Estoy usando el siguiente codigo:
Código PHP:
$date1="2004-05-21";
$date2="2003-03-19";
$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";
echo 
"Diferencia en horas: ".$dif."<br>";
echo 
"Diferencia en dias: ".$dif2."<br>"
Bueno el tema es qe me muestra en horas y en dias la otra...
Lo que yo quiero es que me de, los años, meses y dias...
Y la verdad es que no entiendo el codigo :S asi que si alguien le entiende me pasa a decir como puedo hacer..!

Gracias
  #2 (permalink)  
Antiguo 30/08/2005, 01:52
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 18 años, 8 meses
Puntos: 0
Esto te resta las dos fechas y te muestra la fecha resultante en formato:

YY - MM - DD - HH:MM:SS

Si quieres otro formato solo tienes que cambiar el primer parámetro de la funcion date. En vez de "Y - m - d - G:i:s" poner otras letras.
Te dejo el enlace donde puedes ver todas las que puedes poner:

http://es2.php.net/manual/es/function.date.php

Código PHP:
<?
$date1
="2004-05-21";
$date2="2004-05-20";
$s strtotime($date1)-strtotime($date2);
echo 
date("Y - m - d - G:i:s"$s);
?>
  #3 (permalink)  
Antiguo 30/08/2005, 07:42
Avatar de chechun  
Fecha de Ingreso: diciembre-2001
Ubicación: Córdoba - Capital - Alber
Mensajes: 348
Antigüedad: 22 años, 3 meses
Puntos: 0
jajaja... puse el cogigo de esta manera:
Código PHP:
$date1="30-08-2005"
$date2="08-03-1981";
$s strtotime($date1)-strtotime($date2);
echo 
date("d - m - Y - G:i:s"$s); 
Y el resultado que me tira es:
------------------------------------------
25 - 06 - 1992 - 21:00:00
=================================

cuando tendria que ser:
22- 05 - 0024 - (mas o menos )
  #4 (permalink)  
Antiguo 30/08/2005, 08:00
Avatar de chechun  
Fecha de Ingreso: diciembre-2001
Ubicación: Córdoba - Capital - Alber
Mensajes: 348
Antigüedad: 22 años, 3 meses
Puntos: 0
Alguien que me ayude..! me estoy volviendo loco con esto..! hace 2 dias que estoy con esta porqueria..!!! no me sale nada..!!! prove con todo de todas formas y nada..!
HELP

Última edición por chechun; 30/08/2005 a las 09:38
  #5 (permalink)  
Antiguo 30/08/2005, 19:20
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Ve la documentación oficial; la función strtotime() lo que hace convertirte el formato fecha que le pasas a formato TIMESTAMP, esto es un formato en segundos (desde el 1-8-1970, pero t{u preocupate que son segundos).

Entonces al efectuar la resta vaz a tener los segundos de diferencia entre ambas fechas (matemáticas básicas)... pués solo convierte esos segundos a minutos, horas, días... etc. ¿cómo?; diviendiendo (nuevamente matemáticas básicas).

Cada función que no entiendas consultala en la documentación oficial; quizá no sepas la función de intval(), pero lo que hace el código que tienes (y lo que debes de hacer) esta muy claro:
- Obtiene la diferencia en segundos
- Divide dicha difernecia entre los segundos correspondientes a X periodo (si divides entre 60 tendrás los minutos, saca cuentas).
- Obtiene solo la parte entera de esa división (intval()).
- Le resta los segundos correspondientes de esa porción (por eso multiplica por lo mismo que dividió) a la diferencia original...
- Y tenemos un algoritmo... repite cuantas veces sea necesario por los periodos correspondientes.

En serio... matemáticas básicas. Espero haberme dado a entender. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 30/08/2005, 21:59
Avatar de chechun  
Fecha de Ingreso: diciembre-2001
Ubicación: Córdoba - Capital - Alber
Mensajes: 348
Antigüedad: 22 años, 3 meses
Puntos: 0
ok, 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 17:37.