Foros del Web » Programando para Internet » PHP »

Problemas con MKTIME

Estas en el tema de Problemas con MKTIME en el foro de PHP en Foros del Web. Hola, estoy creando un sistema en el cual debo contabilizar los minutos transcurridos entre ciertos eventos. Para esto trato de ocupar mktime para restar las ...
  #1 (permalink)  
Antiguo 20/07/2004, 09:41
 
Fecha de Ingreso: febrero-2002
Ubicación: Molina - Chile
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 0
Problemas con MKTIME

Hola, estoy creando un sistema en el cual debo contabilizar los minutos transcurridos entre ciertos eventos. Para esto trato de ocupar mktime para restar las fechas.. pero realmente es debastador.. me arroja cifras incomprencibles... solo basta con cambiarle el día para que me envíe tonteras...
En realdiad es cuestion de cambiar las fechas y horas... y todo es un desastre.

Ocupe esta función extraída desde el manual de php.net pero tampoco me funciono..., modifique esta funión y le agregue minutos,horas y segundo....pero tampoco paso nada



<?php
// Get date difference between two given dates
// $returntype: s = seconds, m = minutes, h = hours, d = days
// int date_diff(int start_date, int end_date[, string return_type])
function date_diff($start_date, $end_date, $returntype="d")
{
if ($returntype == "s")
$calc = 1;
if ($returntype == "m")
$calc = 60;
if ($returntype == "h")
$calc = (60*60);
if ($returntype == "d")
$calc = (60*60*24);

$_d1 = explode("-", $start_date);
$y1 = $_d1[0];
$m1 = $_d1[1];
$d1 = $_d1[2];

$_d2 = explode("-", $end_date);
$y2 = $_d2[0];
$m2 = $_d2[1];
$d2 = $_d2[2];

if (($y1 < 1970 || $y1 > 2037) || ($y2 < 1970 || $y2 > 2037))
{
return 0;
} else
{
$today_stamp = mktime(0,0,0,$m1,$d1,$y1);
$end_date_stamp = mktime(0,0,0,$m2,$d2,$y2);
$difference = round(($end_date_stamp-$today_stamp)/$calc);
return $difference;
}
}
echo date_diff("2004-06-6", "2004-06-07", "m");
?>


tambien intente con esto
<?php
$dateDiff = mktime(07,50,0,07,20,2004) - mktime(07,02,0,07,20,2004);
echo 'Difference in seconds: ' . $dateDiff . '<br />';
echo '<br />Years Difference = '. floor($dateDiff/365/60/60/24);
echo '<br />Months Difference = '. floor($dateDiff/60/60/24/7/4);
echo '<br />Weeks Difference = '. floor($dateDiff/60/60/24/7);
echo '<br />Days Difference = '. floor($dateDiff/60/60/24);
echo '<br />Hours Difference = '. floor($dateDiff/60/60);
echo '<br />Minutes Difference = '. floor($dateDiff/60);
?>

y al cambiar las fechas tambien envía datos erroneos..

Yo solo necesito contar los minutos ya que a veces el primer proceso se inicia a las 23:59 por ejemplo y termina a las 00:34 .... necesito saber cuantos minutos pasaron. Gracias por vuestra ayuda..

Saludos Marcelo. Chile.
__________________
:adios::adios:WWW.MIPAGINA.CL:adios: :adios:
Directorio de links a sitios de Chile y el mundo

Última edición por Cluster; 20/07/2004 a las 10:04 Razón: Aquí no está permitido la piratería de ningún tipo según las políticas de uso de forosdelweb.com (cualquier aclaración contactame en privado).
  #2 (permalink)  
Antiguo 20/07/2004, 18:41
 
Fecha de Ingreso: febrero-2002
Ubicación: Molina - Chile
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 0
algún genio

Nadie me podría ayudar?
__________________
:adios::adios:WWW.MIPAGINA.CL:adios: :adios:
Directorio de links a sitios de Chile y el mundo
  #3 (permalink)  
Antiguo 20/07/2004, 21:26
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 4 meses
Puntos: 0
Este codigo lo saque del PHP - Cookbook no lo he probado, pero tu puedes probarlo si quieres y modificarlo como quieras:

Código PHP:
// 7:32:56 pm on May 10, 1965
$epoch_1 mktime(19,32,56,5,10,1965);
// 4:29:11 am on November 20, 1962
$epoch_2 mktime(4,29,11,11,20,1962);

$diff_seconds  $epoch_1 $epoch_2;
$diff_weeks    floor($diff_seconds/604800);
$diff_seconds -= $diff_weeks   604800;
$diff_days     floor($diff_seconds/86400);
$diff_seconds -= $diff_days    86400;
$diff_hours    floor($diff_seconds/3600);
$diff_seconds -= $diff_hours   3600;
$diff_minutes  floor($diff_seconds/60);
$diff_seconds -= $diff_minutes 60;

print 
"The two dates have $diff_weeks weeks, $diff_days days, ";
print 
"$diff_hours hours, $diff_minutes minutes, and $diff_seconds ";
print 
"seconds elapsed between them."
espero te ayude.
__________________
Shanti Castillo G.
  #4 (permalink)  
Antiguo 20/07/2004, 21:53
 
Fecha de Ingreso: febrero-2002
Ubicación: Molina - Chile
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 0
San Shantic

Muchas gracias.. el códgio funcionó a la perfección, ya había perdido la paciencia.. junto con mi padre estábamos "craneando" una función.. pero vemos que esto ya funciona.. Muchas Gracias. Recuerden que tenogo los libros de php disponibles.. que alguien consiga un host para subirlos y dejarlos disponibles a ala comunidad. Saludos Marcelo. Chile
__________________
:adios::adios:WWW.MIPAGINA.CL:adios: :adios:
Directorio de links a sitios de Chile y el mundo
  #5 (permalink)  
Antiguo 20/07/2004, 21:58
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 4 meses
Puntos: 0
el de PHP Cookbook es mi mejor amigo :D
__________________
Shanti Castillo G.
  #6 (permalink)  
Antiguo 21/07/2004, 07:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A todo esto .. ¿usan base de datos para gestionar esas fechas? .. Por qué si es así .. bajo SQL (lenguaje estructurado de consultas) ya tienen funciones própias de este para hacer esos cálculos de fechas.

Un saludo,
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 19:08.