Foros del Web » Programando para Internet » PHP »

restar fechas (año/mes/dia)

Estas en el tema de restar fechas (año/mes/dia) en el foro de PHP en Foros del Web. Hola chicos,tengo un problema,ojala me puedan ayudar... tengo 2 edits (fecha_inicial y fecha_final)estas fechas las quiero restar para obtener un resultado, pero ya intente de ...
  #1 (permalink)  
Antiguo 07/06/2004, 17:19
 
Fecha de Ingreso: abril-2004
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 20 años
Puntos: 0
Pregunta restar fechas (año/mes/dia)

Hola chicos,tengo un problema,ojala me puedan ayudar...
tengo 2 edits (fecha_inicial y fecha_final)estas fechas las quiero restar para obtener un resultado,
pero ya intente de varias formas y no me sale...

1ero hice una consulta utilizando el DATEDIFF (a lo mejor no esta bien la sintàxis por eso no me sale):

$cons="select DATEDIFF(Y,m,d,'$fecha_ini','$fecha_fin')from calendario";
$res=mysql_query($cons,$conex) or die ("No se puede restar fecha a CALENDARIO");
$numero_filas=mysql_num_rows($res);
$numero_campos= mysql_num_fields($res);

luego hice una operaciòn para obtener mi resultado:
echo $ciclo_escolar=$fecha_fin-$fecha_ini;echo"<br>";
Pero solo me marca como resultado 0,tambien ya intente usar el mktime,
porque ya ven que es para obtener fechas, bueno no se la cosa es que para
esta resta que necesito hacer, pues no me ha salido y necesito de veras su ayuda
urgentemente por favooooorrrrrrr contestenme pronto... Gracias
__________________
Dejame conocer todo lo que sabes...
  #2 (permalink)  
Antiguo 07/06/2004, 18:05
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
puedes seleccionar las dos fechas y luego utlizas una funcion para restarlas asi:

Código PHP:
function tiempo_resta($fecha1,$fecha2){
     
//separo la fecha1
   
list($fecha,$hora)=split(' ',$fecha1);
   list(
$año,$mes,$dia)=split('-'$fecha);
   list(
$hor,$min,$sec)=split(':',$hora);
     
//calculo timestamp de la fecha1
   
$y=mktime($hor,$min,$sec,$mes,$dia,$año);

     
//separo la fecha2
   
list($fecha,$hora)=split(' ',$fecha2);
   list(
$año,$mes,$dia)=split('-'$fecha);
   list(
$hor,$min,$sec)=split(':',$hora);
     
//calculo timestamp de la fecha1
   
$z=mktime($hor,$min,$sec,$mes,$dia,$año);
   
$resta $z $y;
   
$dias $resta 86400;
   return 
$dias;

  #3 (permalink)  
Antiguo 09/06/2004, 12:06
 
Fecha de Ingreso: abril-2004
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 20 años
Puntos: 0
Hola xcorpio aùn no me sale,es que nunca he usado el list ni el split y ademàs yo solo tengo 2 edits de fecha (año/mes/dia) mira te voy a mandar el còdigo que tengo tu me dices donde tengo el error o si me falta agregarle otra cosa por favor y gracias por tu ayuda...

està pàgina nadamàs la hice para probar tu còdigo, pero es màs o menos lo que quiero que haga...

<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="fecha2.php" method="POST">
<input type="text" name='Cmbfecha_inicial'><br>
<input type="text" name='Cmbfecha_final'><br><br>
<input type="submit" value="CICLO-ESCOLAR"><br>
</form>
</body>
</html>

Este es el segundo script:

<?php

$fecha_ini=$_POST ['Cmbfecha_inicial'];echo"<br>";
$fecha_fin=$_POST ['Cmbfecha_final']; echo"<br>";


include ('conexion.php');
$cons="INSERT INTO calendario (fecha_inicial,fecha_final)
VALUES ('$fecha_ini','$fecha_fin')";

$res=mysql_query($cons,$conex) or die ("No se pudo insertar ningùn dato a la tabla CALENDARIO");
mysql_close($conex);

// se hace la consulta para ver si se insertaron los campos
include ('conexion.php');
$cons="select fecha_inicial,fecha_final from calendario";
$res=mysql_query($cons,$conex) or die ("No se puede mostrar ningùn dato de CALENDARIO");
$numero_filas=mysql_num_rows($res);
$numero_campos= mysql_num_fields($res);

//Realizar resta de fechas y obtener ciclo_escolar
/*include ('conexion.php');
$cons="select DATEDIFF(d,'$fecha_ini','$fecha_fin')from calendario";
$res=mysql_query($cons,$conex) or die ("No se puede restar fecha a CALENDARIO");
$numero_filas=mysql_num_rows($res);
$numero_campos= mysql_num_fields($res);*/


echo "<table><tr><th>Fecha inicial</th><th>Fecha final</th></tr>";

while (list($fecha_ini,$fecha_fin) = mysql_fetch_row($res)) {
print(" <tr>\n"." <td>$fecha_ini</a></td>\n"." <td>$fecha_fin</td>\n".
" </tr>\n");
}

print "</table>";
mysql_free_result($res);
//se liberan los resultados de la consulta
mysql_close($conex);
?>

<?

function tiempo_resta($fecha_ini,$fecha_fin){
//separo la fecha1
list($fecha,$hora)=split(' ',$fecha_ini);
list($anio,$mes,$dia)=split('-', $fecha);
list($hor,$min,$sec)=split(':',$hora);
//calculo timestamp de la fecha1
$y=mktime($hor,$min,$sec,$mes,$dia,$anio);

//separo la fecha2
list($fecha,$hora)=split(' ',$fecha_fin);
list($anio,$mes,$dia)=split('-', $fecha);
list($hor,$min,$sec)=split(':',$hora);
//calculo timestamp de la fecha1
$z=mktime($hor,$min,$sec,$mes,$dia,$anio);
$resta = $z - $y;
$dias = $resta / 86400;
return $dias;

tiempo_resta();
}
?>

Ojala y me haya explicado...
Gracias por su ayuda... (De plano si estoy perdida en esto por eso necesito una idea màs clara que la que yo tengo...)
__________________
Dejame conocer todo lo que sabes...
  #4 (permalink)  
Antiguo 09/06/2004, 12:14
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
si las lineas siguientes estat en el codigo como las posteaste creo que estan mal:
$fecha_ini=$_POST ['Cmbfecha_inicial'];echo"<br>";
$fecha_fin=$_POST ['Cmbfecha_final']; echo"<br>";
no deberia ir el espacio entre $_POST y ['Cmb...

otra, creo que nadamas declaraste la funcion que te propuse pero no la mandaste llamar.

Mira lo que yo te proponia ere que declararas la funcion que te mande al inicio del script y que no usaras la funcion DATEDIFF() si no que selcccionaras las dos fechas y luego las pasaras como parametros en mi funcion.
  #5 (permalink)  
Antiguo 09/06/2004, 12:19
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
el script quedaria así:

<?php
// Mi funcion
function tiempo_resta($fecha_ini,$fecha_fin){
//separo la fecha1
list($fecha,$hora)=split(' ',$fecha_ini);
list($anio,$mes,$dia)=split('-', $fecha);
list($hor,$min,$sec)=split(':',$hora);
//calculo timestamp de la fecha1
$y=mktime($hor,$min,$sec,$mes,$dia,$anio);
//separo la fecha2
list($fecha,$hora)=split(' ',$fecha_fin);
list($anio,$mes,$dia)=split('-', $fecha);
list($hor,$min,$sec)=split(':',$hora);
//calculo timestamp de la fecha1
$z=mktime($hor,$min,$sec,$mes,$dia,$anio);
$resta = $z - $y;
$dias = $resta / 86400;
return $dias;
}

$fecha_ini=$_POST ['Cmbfecha_inicial'];echo"<br>";
$fecha_fin=$_POST ['Cmbfecha_final']; echo"<br>";

echo "La resta de las dos fechas es: " . tiempo_resta($fecha_ini,$fecha_fin)
?>
  #6 (permalink)  
Antiguo 09/06/2004, 12:55
 
Fecha de Ingreso: abril-2004
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 20 años
Puntos: 0
Hola otra vez xcorpion:
A que te refieres con que seleccione las fechas? (porque si te refieres a seleccionar las fechas en la consulta pues ya las hice)select fecha_inicial,fecha_fina from calendario;
__________________
Dejame conocer todo lo que sabes...
  #7 (permalink)  
Antiguo 09/06/2004, 12:58
 
Fecha de Ingreso: abril-2004
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 20 años
Puntos: 0
Deja lo checo muchas gracias...
__________________
Dejame conocer todo lo que sabes...
  #8 (permalink)  
Antiguo 10/06/2004, 09:56
 
Fecha de Ingreso: abril-2004
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 20 años
Puntos: 0
Hola xcorpio mira ya me funcionò, pero me marca este error
Notice: Undefined offset: 1 in c:\archivos de programa\easyphp1-7\www\abacus _proyecto (modulo administracion)\abacus\calendario\fecha2.php on line 48

es en las lineas del list no se si sea porque los parametros no corresponden a mi BD o porque, bueno lo importante es que ya me funciona...
__________________
Dejame conocer todo lo que sabes...
  #9 (permalink)  
Antiguo 10/06/2004, 14:22
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
mira morhenna ese tipo de errores no son graves y pasan como quiera, si quieres que ya no aparescan deshabilitalo en el PHP.ini, o mandame la linea del error.
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 07:11.