Foros del Web » Programando para Internet » PHP »

calcular tiempo en semanas

Estas en el tema de calcular tiempo en semanas en el foro de PHP en Foros del Web. calcular tiempo en semanas Tengo un formulario llamado lote. En el formulario hay un campo en el que se introduce la fecha mediante un calendario. ...
  #1 (permalink)  
Antiguo 17/11/2011, 20:12
 
Fecha de Ingreso: julio-2011
Ubicación: Popayán Cauca
Mensajes: 24
Antigüedad: 12 años, 9 meses
Puntos: 0
Información calcular tiempo en semanas

calcular tiempo en semanas
Tengo un formulario llamado lote. En el formulario hay un campo en el que se introduce la fecha mediante un calendario. Necesito que cuando se realice la consulta, aparezca en un campo llamado edad actual, el tiempo en semanas a partir de la fecha que se introdujo en el formulario.
Tengo un codigo en el extraer de lote que permite hacer el calculo pero a la hora de hacer la consulta, no da el numero de semanas correcto, y el sistema presenta tres comentarios sobre tres lineas de codigo de la funcion .
Les adjunto el codigo del extraer de lote.
ver_lote.php
function Semanas($fecha_desde, $fecha_hasta){ $divide_ini = explode("-", $fecha_desde); $divide_fin = explode("-", $fecha_hasta); $fecha_ini = mktime(0, 0, $divide_ini[0], $divide_ini[1], $divide_ini[2]); $fecha_fin = mktime(0, 0, $divide_fin[0], $divide_fin[1], $divide_fin[2]); $segundos = $fecha_ini - $fecha_fin; // Obtenemos los segundos entre esas dos fechas $segundos = abs($segundos); //en caso de errores $semanas = floor($segundos / 604800); //Obtenemos las semanas entre esas fechas. echo "Hay " . $semanas; } //include("conecta.php");$conectar=mysql_connect("lo calhost","root","sena");mysql_select_db("tecnoavic ola19",$conectar); //$resultado = mysql_query("SELECT * FROM lote ORDER BY id_lote"); $_pagi_sql =("SELECT * FROM lote ORDER BY id_lote"); //cantidad de resultados por página (opcional, por defecto 20)$_pagi_cuantos = 3; //Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamenteinclude("paginator.inc.php"); echo "<table width='100%' height='100%' border='' bgcolor=''> <tr bgcolor='#5F9EA0'><td>NRO. LOTE</td><td>FECHA INGRESO</td><td>NUMERO AVES</td><td>LINEAS</td><td>EDAD FECHA INGRESO</td><td>OBSERVACIONES</td><td>SEMANAS</td></tr>"; //while($fila = mysql_fetch_array($resultado))while($fila = mysql_fetch_array($_pagi_result)){echo "<tr> <td>" . $fila['lote'] . "</td> <td>" . $fila['fch_ingreso'] . "</td> <td>" . $fila['numero'] . "</td> <td>" . $fila['lineas'] . "</td> <td>" . $fila['edad'] . "</td> <td>" . $fila['observaciones'] . "</td> <td>"; $fecha_actual = date(m-d-Y); Semanas($fila['fch_ingreso'],$fecha_actual); echo "</td> </tr>"; }//Incluimos la barra de navegaciónecho"<p>".$_pagi_navegacion."</p>"; echo "</table>";mysql_close($conectar);?> <p align="center" HEIGHT="5%" width="18%" ><input id="registro" name="Imprimir" type="button" value="imprimir" style='cursor:pointer' onClick="window.print()"></p>

Al hacer la consulta, en el campo semanas, que es donde debe aparecer el cálculo, aparece este mensaje del sistema:
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for '-5.0/no DST' instead in C:\AppServ\www\tecnoavicola_AppServer1\modelos\ver _lote.php on line 46
Este corresponde a esta linea de codigo:
<td>";$fecha_actual = date(m-d-Y); Semanas($fila['fch_ingreso'],$fecha_actual);echo "</td>

Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for '-5.0/no DST' instead in C:\AppServ\www\tecnoavicola_AppServer1\modelos\ver _lote.php on line 8
Este corresponde a esta linea de còdigo:
$fecha_ini = mktime(0, 0, $divide_ini[0], $divide_ini[1], $divide_ini[2]);

Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the time zone identifier. We selected 'America/New_York' for '-5.0/no DST' instead in C:\AppServ\www\tecnoavicola_AppServer1\modelos\ver _lote.php on line 9
Este corresponde a esta línea de código:
$fecha_fin = mktime(0, 0, $divide_fin[0], $divide_fin[1], $divide_fin[2]);
Por favor lean el código y espero me aconsejen algo. Gracias.
  #2 (permalink)  
Antiguo 17/11/2011, 20:52
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: calcular tiempo en semanas

Tienes que definir la zona horaria, usa la función date_default_timezone_set o en tu php.ini la directiva date.timezone

En el caso de Colombia:

Código PHP:
Ver original
  1. <?php
  2. date_default_timezone_set('America/Bogota');
  3.  
  4. //El resto de código

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 18/11/2011, 22:24
 
Fecha de Ingreso: julio-2011
Ubicación: Popayán Cauca
Mensajes: 24
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: calcular tiempo en semanas

Gracias por la respuesta, insertè el còdigo como me indicaste y funciona muy bien.
Pero aun tengo un problema, y es que el codigo calcula el tiempo en semanas a partir de una fecha inicial, pero el resultado no es correcto pues le damos esta fecha:
2011-11-01 como inicial y esta como final 2011-11-18 y el calculo es hay 48.
Que error he cometido en estas lineas:
$divide_ini = explode("-", $fecha_desde);
$divide_fin = explode("-", $fecha_hasta);
$fecha_ini = mktime(0, 0, $divide_ini[0], $divide_ini[1], $divide_ini[2]);
$fecha_fin = mktime(0, 0, $divide_fin[0], $divide_fin[1], $divide_fin[2]);
$segundos = $fecha_ini - $fecha_fin;
// Obtenemos los segundos entre esas dos fechas $segundos = abs($segundos); //en caso de errores
$semanas = floor($segundos / 604800);
//Obtenemos las semanas entre esas fechas.
echo "Hay " . $semanas;

Etiquetas: formulario, mysql, registro, semanas, sql, variables, calculadora
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 01:32.