Foros del Web » Programando para Internet » PHP »

Función mktime y posible algoritmo alternativo

Estas en el tema de Función mktime y posible algoritmo alternativo en el foro de PHP en Foros del Web. Hola phperos !! Mi cuestión es que utilizo la función mktime , combinada con la función date para obtener el día de la semana, a ...
  #1 (permalink)  
Antiguo 05/05/2005, 12:12
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Función mktime y posible algoritmo alternativo

Hola phperos !!
Mi cuestión es que utilizo la función mktime, combinada con la función date para obtener el día de la semana, a partir de una fecha de la forma dia/mes/año. Y necesito esto para implementar un calendario.
Para obtener el día hago algo como:
Código PHP:
$fecha=mktime(12,0,0,$mes,$dia,$ano);
if (
date("w",$fecha)==0)
 {
   
//Es domingo
 
}
else
 {
   
//Es un día laborable
 

El problema es que a partir del 18/1/2038 la función mktime devuelve -1, y no es posible saber en qué día estamos.
Mi directora de PFC me comentó que igual podía implementar yo un algoritmo que devolviera el día de la semana a partir de una fecha.
Me gustaría que alguien me orientara en este tema, porque no estoy segura de que se pueda hacer, y mucho menos sé por donde abordarlo.
Gracias de antemano por la ayuda.
Un saludo.
__________________
;-) lcrecarey
  #2 (permalink)  
Antiguo 05/05/2005, 13:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El problema que obtienes sucede sólo en PHP bajo windows ..

Cita:
Year may be a two or four digit value, with values between 0-69 mapping to 2000-2069 and 70-99 to 1970-1999 (on systems where time_t is a 32bit signed integer, as most common today, the valid range for year is somewhere between 1901 and 2038).


Windows: Negative timestamps are not supported under any known version of Windows. Therefore the range of valid years includes only 1970 through 2038.
www.php.net/mktime

(sólo es para que sepas por qué sucede en Windows este efecto).


Un saludo,
  #3 (permalink)  
Antiguo 05/05/2005, 13:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usando google .. salió esta classe/funciones que puedes usar para solventar el problema de ese rango de fechas .. (supongo que implementará el algorítmo que andas buscando):

http://phplens.com/phpeverywhere/adodb_date_library

Dice que trabaja con fechas: "Dates from 100 A.D. to 3000 A.D." .. creo que con eso ya te sobrará no?

Un saludo,
  #4 (permalink)  
Antiguo 06/05/2005, 06:04
 
Fecha de Ingreso: enero-2005
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
Hola Cluster:
Muchas gracias por la referencia.
Era exactamente lo que estaba buscando. Ya había buscado en google, y también me había leído el manual, pero no conseguí llegar yo solita a la solución que tú me proporcionaste.Gracias, de verdad, por la información.

Pero, todavía me queda una duda: ¿Puedo utilizar este código libremente? Debo tener en cuenta que es para mi proyecto fin de carrera y que va a estar funcionando en una empresa real.Espero que me puedas aconsejar en esto.

Y, ya puestos a preguntar, ¿hay alguna forma de saber cuáles son los días festivos?, para tratarlos como los domingos. Me refiero a días como 25 de Marzo, 15 de Agosto, 12 de Octubre, 1 de Noviembre, 6 y 8 de Diciembre,... Porque no sé si son siempre fijos o siguen algún patrón variable. Si sabes alguna referencia, te agradezco la dedicación. Y sino, pues ya seguiré investigando sobre ello.
Gracias de nuevo por tu ayuda.
Un saludo.
__________________
;-) lcrecarey
  #5 (permalink)  
Antiguo 06/05/2005, 09:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Pero, todavía me queda una duda: ¿Puedo utilizar este código libremente? Debo tener en cuenta que es para mi proyecto fin de carrera y que va a estar funcionando en una empresa real.Espero que me puedas aconsejar en esto.
En la documentación del mismo o bien en el código (en su cabecera) debería estar bajo que licencia de uso está liberado ese código. También tienes los médios de contactos con el programador/grupo que ha realizado dicho código .. así que si hay dudas podrías consultarles a ellos directamente y exponer tu caso para que te indiquen de primera mano el tema.

Cita:
Y, ya puestos a preguntar, ¿hay alguna forma de saber cuáles son los días festivos?, para tratarlos como los domingos. Me refiero a días como 25 de Marzo, 15 de Agosto, 12 de Octubre, 1 de Noviembre, 6 y 8 de Diciembre,... Porque no sé si son siempre fijos o siguen algún patrón variable. Si sabes alguna referencia, te agradezco la dedicación. Y sino, pues ya seguiré investigando sobre ello.
Gracias de nuevo por tu ayuda.
Con respecto a los "domingos" ya conoces que con "date()" puedes obtener que día de la semana es tal fecha .. Pero para el resto de fechas variables festivas lo que se suele hacer es tener una Base de datos u otro médio de almacenamiento donde guardas esas fechas .. y a la hora de presentar tu fecha ahí consultas a esa BD y miras si está o no para determinar "es festivo" (y hasta que "festivo es concretamente").

Te recomendaría ver algún sistema de calendario ya hecho para que veas como trabajan el tema ..pero más o menos es como te menciono.

De hecho en el mismo sitio que te indiqué .. abajo veras unos sistemas de calendarios ya implementados que se basan o usas esa misma classe para trabajar con fechas:
http://freshmeat.net/projects/activecalendar/

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 10:15.