Foros del Web » Programando para Internet » PHP »

dias habilers

Estas en el tema de dias habilers en el foro de PHP en Foros del Web. Que tal!, he estado casi un mes desarrollando algo que se suponia que era sencillo, pero que se le fueron agregando nuevos requerimientos para que ...
  #1 (permalink)  
Antiguo 28/03/2005, 16:24
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Pregunta dias habilers

Que tal!,
he estado casi un mes desarrollando algo que se suponia que era sencillo, pero que se le fueron agregando nuevos requerimientos para que la cosa quedara mejor, sin embargo al final de todo, llegue a la piedra de tope:
calcular los dias habiles de una fecha dada, vale decir: si ingreso un pedido el viernes debe entregarse el lunes no el sabado (esto con numeros).

quiza alguien tenga algo por ahi!!
saludos
Atte
mauricio
  #2 (permalink)  
Antiguo 28/03/2005, 17:19
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
... es una consulta demasiado vaga... no aplicado a nada en concreto.. pero!

Podrías ayudarte de la función date() de PHP:
Código PHP:
$hoydate('D'); // día de la semana, en texto, con tres letras; por ejemplo, "Fri"
// y así poner una condicinal
if($hoy=="Sun" || $hoy=="Sat") { // confirmalo
   
echo "Hoy no trabajo";

... aunque si trabajas con MySQL.. ésta también tiene su funcion DAYOFWEEK() que hace lo mismo... te recomiendo utilizar esta última preferentemente.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 28/03/2005 a las 17:29
  #3 (permalink)  
Antiguo 29/03/2005, 05:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Dentro de tus días hábiles hay que considerar también los festivos (a nivel mundial, nacianales del pais donde se ejecute esa aplicación, regionales .. ). Para eso te vendría bien usar una Base de datos donde registrar esas fechas "reservadas" .. bajo el mismo modelo de datos podrías ingresar esos sábados y domingos (no necesariamente manualemnte, podrías hacer alguna rutina para pre-cargar esos días sabado/domingo de cierto año/s .. ) aunque mejor sería obtenerlo por cálculo.

Concreta si usas Base de datos .. por qué la idea es resolver el problema en la médida de lo posible con SQL sólo.

Un saludo,
  #4 (permalink)  
Antiguo 29/03/2005, 07:49
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
dias laborales

Muuuuuuuuuuuuchas gracias por responder!


Bueno originalmente el codigo hacia malamente esa consulta por php, (no lo hice yo, solo lo estoy modificando).

Interesante respuesta la de calcularlo por mysql directamente. averiguare sobre esa forma a ver si algo resulta. Sin embargo no seria malo saber como hacerlo por php. ya que aqui, no encontre mucha informacion .
Nuevamente gracias
Maurimono.




buscando se encuentra. Aqui hay algo super interesante sobre la funcion mysql DAYOFWEEK() entre otras.
http://www.mysql-hispano.org/page.php?id=31&pag=6

Última edición por maurimono; 29/03/2005 a las 08:02
  #5 (permalink)  
Antiguo 29/03/2005, 09:38
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
Es complicado!

Encontre unos ejemplo que me dejaron perdido:

set @someday = curdate();
set @weekstart = 1; // Sunday
set @weekend = 7; // Saturday

end of week:
select date_add(@someday, interval @weekend-dayofweek(@someday) day);

beginning of week:
select date_sub(@someday, interval dayofweek(@someday)-@weekstart day);


los encontre en el link anterior. alguien puede explicarme como puedo sacar el weekend de una fecha??

esto tengo por ahora:

select * from datos where curdate()<= date_sub(fechaem, interval 2 day)

en teoria filtra los registros que su fechaem mas dos dias es >= hoy.

Atte
Mauricio
  #6 (permalink)  
Antiguo 29/03/2005, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si lo deseas movemos el mensaje al foro de Base de datos . .aunque alguna solución podrían darte desde PHP+SQL .. lo ideal es que lo resuelvas en SQL.

Es decir, .. primero obtener la sentencia SQL adecuada .. luego ejecutarla con PHP y obtener su valor para el resto de tu proceso.

Sólo recuerda que para poder aplicar correctamente funciones de trabajo con fechas desde SQL (de Mysql) tus campos de fechas han de ser tipo DATE o DATETIME .. no un "varchar" con la fecha ahí "escrita".

Un saludo,
  #7 (permalink)  
Antiguo 29/03/2005, 10:33
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
chuuuuuuuuu!!!

Que lastima!!!, deveras!, el programador que diseño esta base la hizo con """echas tipo text""" :-p ............


sin embargo por a alguien le sirve en: http://dev.mysql.com/doc/mysql/en/da...functions.html

hay harta informacion, ademas mas abajo hay faq que pueden ser utiles.
  #8 (permalink)  
Antiguo 29/03/2005, 10:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues por ahí ya vamos mal .. con campos tipo "text" .. así no se puede aplicar ninguna función de fechas de SQL .. lo cual complicaaaaaa en exceso cualquier tipo de cálculo de fechas u operaciones con fechas.

No sé que formato de fecha actualmente guarda en ese campo "text" .. pero a malas podrías hacer algún tipo de conversor de esas fechas al standard SQL y cambiar el tipo de campo a un DATE o DATETIME según requieras (si es que tiene ya datos que rescatar esas tablas .. si no es así .. cambialo ya mismo y adapta el código).

Un saludo,
  #9 (permalink)  
Antiguo 29/03/2005, 11:30
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 19 años, 6 meses
Puntos: 0
muy deacuerdo contigo, el problema es que se trata de un sistema bastante grande, ya echo, y que me parecia que se demoraaaaaaaaaba en cargar datos, en grabarlos, etc. todo esto es por una mala estructura desde el diseño de la base en adelante. Esto esta mal, y para variar contra el tiempo... sin duda alguna cuando tenga que hacer algo desde cero no dudare en definir los campos como corresponde.

Atte
Mauricio
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 02:58.