Foros del Web » Programando para Internet » PHP »

contador de días en php

Estas en el tema de contador de días en php en el foro de PHP en Foros del Web. Necesito realizar un contador de días, de las siguiente manera tengo una fecha de inicio y un fecha de terminación, y necesito contar el numero ...
  #1 (permalink)  
Antiguo 12/02/2004, 13:43
 
Fecha de Ingreso: diciembre-2003
Mensajes: 11
Antigüedad: 14 años
Puntos: 1
Pregunta contador de días en php

Necesito realizar un contador de días, de las siguiente manera

tengo una fecha de inicio y un fecha de terminación, y necesito contar el numero de dias que hay entre la una y la otra, pero necesito que en el lapso de fechas de inicio y terminación, no se tenga en cuenta los dias sabado, domingo ni festivos.

Es decir para un lapso de tiempo que empieza el lunes 2 de enero, y termina el miercoles 11 de enero, teniedo en cuenta que el lunes 9 de enero es festivo, cuente en total 6 dias, correspondiente a las suma total de dias, sin contar los sabados, domingo y festivos

alguien que me ayude por favor
  #2 (permalink)  
Antiguo 12/02/2004, 14:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm "dias hábiles .. ".

Si mencionas que no ha de contar los "festivos" tendrás que tener en alguna array/tabla de una BD/archivo de texto plano las fechas que son festivos .. ahí podrias incluir los sabados y domingos (o bien dejarlo a la lógica que determine si tal fecha es sabado o domingo).

Supongo que vas a necesitar un "generador de fechas" .. es decir un bucle para generar fechas usando la función mktime() entre tu fecha inicio y la final que obtenga los dias que hay (incluido festivos, sabados y domingos ..) luego será cosa de revisar esos fechas obtenidas contrastandolas con las fechas festivas para determinar el nº de dias "hábiles" que corresponden a ese rango de fechas dato ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/02/2004, 15:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por cierto .. trabajas con Base de datos?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 12/02/2004, 15:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 11
Antigüedad: 14 años
Puntos: 1
tengo esta función

function diff_date($date1, $date2){
$an = substr("$date1", 0, 4);
$mes = substr("$date1", 5, 2);
$dia = substr("$date1", 8, 2);

$an2 = substr("$date2", 0, 4);
$mes2 = substr("$date2", 5, 2);
$dia2 = substr("$date2", 8, 2);

$timestamp = mktime(0, 0, 0, $mes, $dia, $an);
$timestamp2 = mktime(0, 0, 0, $mes2, $dia2, $an2);
$diff = floor(($timestamp - $timestamp2) / (3600 * 24));
return $diff;
}

como puedes ver esta función lo que hace es contar el numero de días neto en el lapso de tiempo.

Pero lo que no se, es como realizar el conteo de sabados, domingo y festivos, y restarlo al total de dias en el lapso.

alguien me puede ayudar un poco o ubicarme de mas o menos que debo hacer.

gracias

Última edición por cajaramillo; 13/02/2004 a las 14:35
  #5 (permalink)  
Antiguo 13/02/2004, 14:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 11
Antigüedad: 14 años
Puntos: 1
me pueden ayudar, ncesito esto pero super urgente, por favor

help me
  #6 (permalink)  
Antiguo 13/02/2004, 14:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. vamos a ver ..

Tu has intentado poner en práctica lo que por lo menos por mi parte intenté explicarte de como lo resolvería? ...

Te pregunté si usabas base de datos .. por qué si es así la cosa puede cambiar muchooo (mas simple la solución o menos ..).

En fin .. sólo te comento que forosdelweb.com no es un sistio de "programadores ONG" .. así que si te urge tendrás que esperar que alguien sepa de algo así ya hecho o se ponga hacerlo. Pero para eso si tu colaboras y vas poniendo los progresos que hagas con las recomendaciones o intentos que hagas será lo mejor ..sino este mensaje caerá en el olvido como ya le estaba ocurriendo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 13/02/2004, 15:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Tienes que crearte una lista con todos los festivos del año(o años). Por ejemplo, en un array. Luego recorres el array contando cuantos de esos elementos entra en tu periodo. Y ese numero se lo restas al numero total que ya tienes obtenido.

Por ejemplo:
Código PHP:
$festivos=array(20040106,20040108);  // asi en aaaammdd o en timestamp, todos los festivos, sabados y domingos

$inicio=20040202;  // fecha inicio, asi o en tiem stamp
$final=20040313// fecha final

$num_festivos=0;
foreach (
$festivos as $festivo) {
  if (
$festivo>=$inicio && $festivo<=$final$num_festivos++;
}

// y aqui restas del valor que tenias antes
$total=diff_date($inicio,$final)-$num_festivos
Mas o menos la idea seria esa.+

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 13/02/2004, 15:08
 
Fecha de Ingreso: diciembre-2003
Mensajes: 11
Antigüedad: 14 años
Puntos: 1
muchos 10-kius

gracias josemi, esa si fue una verdadera ayuda, mis infinitas gracias.

Estaba bastante desubicado, pues apenas estoy aprendiendo Php.

Ojala que aquellos que tanto saben dejen un poco la sobervia y comprendamos que en este mundo algunos vamos aprendiendo en la marcha.

de nuevo gracias

Última edición por cajaramillo; 13/02/2004 a las 15:23
  #9 (permalink)  
Antiguo 13/02/2004, 15:22
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 15 años, 1 mes
Puntos: 1
No existe modo de tomar los datos del calendario del pc o sevidor.. pues de saber al menos que dias son sábados o domingos como minimo... porque si vamos a hablar de años estariamos hablando de muchos datos..

y si es en base de datos.. entonces como podria hacerse???

Un saludo,

Última edición por Salome; 13/02/2004 a las 15:33
  #10 (permalink)  
Antiguo 13/02/2004, 15:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Ojala que aquellos que tanto saben dejen un poco la sobervia y comprendamos que en este mundo algunos vamos aprendiendo en la marcha.
Desde un principio te comenté el tema del array para tus festivos .. si no sabes manejar un array la pregunta era esa misma y no:

Cita:
ncesito esto pero super urgente, por favor
Salome

Los festivos los defines tu y son própios hasta del lugar de residencia tuyo .. así que eso por lo menos necesitas de tenerlos y actualizarlos a mano .. sea en arrays o base de datos.

Los domingos y sabados puedes hacerte rutinas para "rellenar" ese array de festivos o base de datos.

Con mktime() puedes componer un fecha, con checkdate() chequear que la fecha es correcta y con un bucle + eso puedes recorrerlas .. Con la función date() puedes obtener el día de la semana (en nº correlativo) y así obtener si es sabado o domingo la fecha que has generado.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 13/02/2004, 15:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hombre, una forma de saber los sabados y domingos entre 2 fechas es saber el dia de la semana del inicio, dia de la semana de final, y el numero de semanas enteras que hay entre ambas.

Luego como ya ha dicho Cluster, los dias festivos varian de ciudad en ciudad, y de pais a pais.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 13/02/2004, 16:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como suele pasar .. esta "rueda" ya está inventada. (eso no quita que se quiera "reinventar" para probar y aprender ..)

Si quieres ver ejemplos completos .. revisa estas classes (classe != tutorial .. ):
http://www.phpclasses.org/browse/package/726.html
http://www.phpclasses.org/browse/package/1021.html
http://www.phpclasses.org/browse/package/1213.html

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 13/02/2004, 16:16
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 15 años, 1 mes
Puntos: 1
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 18:22.