Foros del Web » Programando para Internet » PHP »

Determinar fecha completa con numero de semana

Estas en el tema de Determinar fecha completa con numero de semana en el foro de PHP en Foros del Web. Hola Tengo el siguiente codigo para obtener la fecha de los dias de la semana segun un numero de semana entregado, la consulta es... existe ...
  #1 (permalink)  
Antiguo 09/08/2011, 11:23
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 4
Determinar fecha completa con numero de semana

Hola
Tengo el siguiente codigo para obtener la fecha de los dias de la semana segun un numero de semana entregado, la consulta es...
existe una mejor forma de hacerlo, el problema se presenta en la configuracion de otros servidores, no siempre funciona en otros. entonces si existe otra o mejor forma de hacerlo agradeceria mucho su ayuda.

Código PHP:
 for ($i=1;$i<8;$i++){
        
$fecha  date("d/m/Y",strtotime("01/01 +".($semana -1)." weeks first day +".$i." day"));
        
$dia   date("w",strtotime("01/01 +".($semana -1)." weeks first day +".$i." day"));
echo 
"Fecha : {$fecha} Dia : {$DiasLong[$dia]}<br>";
    } 
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #2 (permalink)  
Antiguo 09/08/2011, 11:28
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Determinar fecha completa con numero de semana

y de donde sale la variable $semana y $DiasLong? Cual es el resultado que quieres? un ejemplo sería lo mejor.
__________________
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

Última edición por andresdzphp; 09/08/2011 a las 11:34
  #3 (permalink)  
Antiguo 09/08/2011, 11:49
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 4
Respuesta: Determinar fecha completa con numero de semana

oh sorry
la semana es entregada por el usuario adjuntare una imagen para que se vea mejor.
funciona de esta forma. el usuario da un click en el numero de semana al lado izquierdo de la pantalla, con xajax dibujo en el lado derecho el horario de la semana selccionada (ojo con el año).
La variable DiasLong en un arreglo que cree con los nombres largos de los dias de la semana para evitar usar los por defecto y asi no depender de la configuracion del servidor.


dudas... pregunten nomas
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #4 (permalink)  
Antiguo 09/08/2011, 12:03
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Determinar fecha completa con numero de semana

Se podría hacer con puras matemáticas pero la función strtotime lo hace bastante bien y funciona desde PHP 4. Que tipo de error te da en algunos servidores? Desde que esté configurada la zona horaria no debería dar error.

Código PHP:
Ver original
  1. date_default_timezone_set('America/Los_Angeles');
__________________
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
  #5 (permalink)  
Antiguo 09/08/2011, 12:08
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 4
Respuesta: Determinar fecha completa con numero de semana

Hola gracias por responder
el lo que pasa es que en algunos servidores siempre me da la fecha 01/01/2011 (siguiendo los mismos parametros del caso anterior), y claro pense en la funcion de arriba pero esa la cargo en un archivo definiciones.php que se carga al inicio de la aplicacion es asi:
Cita:
date_default_timezone_set("America/Santiago");
aun asi no funciona. por eso busco otra forma de hacerlo.
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #6 (permalink)  
Antiguo 09/08/2011, 14:20
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Determinar fecha completa con numero de semana

No me acordaba que weeks first day sólo funciona a partir de PHP 5.3.0. Prueba este código:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dias = array('Domingo', 'Lunes', 'Martes', 'Miercoles',
  4.     'Jueves', 'Viernes', 'Sabado');
  5.  
  6. function diasSemana($ano, $semana) {
  7.     $enero = mktime(1,1,1,1,1,$ano);
  8.     $mos = (11-date('w',$enero))%7-3;
  9.     $inicios = strtotime(($semana-1) . ' weeks '.$mos.' days', $enero);
  10.     for ($x=0; $x<=6; $x++) {
  11.         $dias[] = date('d-m-Y', strtotime("+ $x day", $inicios));
  12.         $dia[] = date('w', strtotime("+ $x day", $inicios));
  13.     }
  14.    
  15.     $res = array_combine($dias, $dia);
  16.    
  17.     return $res;
  18. }
  19.  
  20. foreach (diasSemana(2011, 1) as $fecha => $dia) {
  21.     echo 'Fecha: ' . $fecha . ' Dia: ' . $dias[$dia] . '<br />';
  22. }
__________________
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

Última edición por andresdzphp; 09/08/2011 a las 14:51 Razón: Le agregué los días
  #7 (permalink)  
Antiguo 09/08/2011, 15:00
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 4
Respuesta: Determinar fecha completa con numero de semana

probando y comentando.....
weeks first day me funciona en mi pc y tengo php 5.2.6??
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #8 (permalink)  
Antiguo 09/08/2011, 15:19
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 8 meses
Puntos: 4
Respuesta: Determinar fecha completa con numero de semana

Andres
muchas gracias por la ayuda he probado y cambiado algnos parametros y funciona, ahora solo me queda probarla en el servidor problematico, pero no dudo que funcionara 100%.... reitero mis agradecimientos,
solo me queda una duda, esta linea no la entiendo bien me explicas?

$mos = (11-date('w',$enero))%7-3;

ATTE

ATN
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #9 (permalink)  
Antiguo 09/08/2011, 15:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Determinar fecha completa con numero de semana

Cita:
Iniciado por omar1977 Ver Mensaje
Andres
muchas gracias por la ayuda he probado y cambiado algnos parametros y funciona, ahora solo me queda probarla en el servidor problematico, pero no dudo que funcionara 100%.... reitero mis agradecimientos,
solo me queda una duda, esta linea no la entiendo bien me explicas?

$mos = (11-date('w',$enero))%7-3;

ATTE

ATN
Eso lo que hace es coger semanas de lunes a domingo, pero en tu caso debería ir en cero si quieres la semana exacta.

Edit: Ya no me acuerdo donde vi que versión de php, soporta weeks first day en la función strtotime, si alguien sabe que aclare gracias.
__________________
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

Última edición por andresdzphp; 09/08/2011 a las 22:52

Etiquetas: completa, determinar, fecha, numero, semana
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:40.