Foros del Web » Programando para Internet » PHP »

Test de Conocimiento, problema de prueba

Estas en el tema de Test de Conocimiento, problema de prueba en el foro de PHP en Foros del Web. Este es un problema chiquito, pero a mi punto de ver, de mucho //coco, les puse uno antes y no me respondieron nada Código PHP: ...
  #1 (permalink)  
Antiguo 11/05/2012, 19:27
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Test de Conocimiento, problema de prueba

Este es un problema chiquito, pero a mi punto de ver, de mucho
//coco, les puse uno antes y no me respondieron nada

Código PHP:
//Tengo el array
 //Los dias de la semana
$days = array('Sun''Mon''Tue''Wed''Thu''Fri''Sat');

//Ahora tengo un array con "ciertos" dias de la semana
//(en orden), el cual puede es dinamico, puede ser un
//dia, dos, tres o hasta los siete dias de la semana
//Entiendo que esta parte es dificil de explicar
//espero me entiendan, por ejemplo
$randomDays = array('Mon''Wed''Fri');


//Por ultimo, tenemos el dia actual, que puede ser
//cualquier dia de la semana obviamente, por ejemplo
$currentDay 'Tue';


//Problema: Identificar la fecha (dia, mes, anio) del
//dia siguiente de la semana que corresponde a
//un dia la variable array "$randomDays".
//Media respuesta: El dia siguiente en la semana
//que esta en la variable "$randomDays" es "Wed" 
  #2 (permalink)  
Antiguo 11/05/2012, 19:31
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: Test de Conocimiento, problema de prueba

muy mal explicado, faltan datos, no se entiende nada
__________________
la la la
  #3 (permalink)  
Antiguo 11/05/2012, 19:34
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Test de Conocimiento, problema de prueba

No lo has leido bien, no hay mas datos, los datos los tienes que sacar tu
  #4 (permalink)  
Antiguo 11/05/2012, 19:35
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Test de Conocimiento, problema de prueba

Asi le decias a tu maestro en un examen? XD

Dare un ejemplo de la vida cotidiana,

Yo defino 3 dias de la semana los cuales voy a correr, decido ir $randomDays= array('Lunes', 'Miercoles', 'Viernes');

Pero como soy olvidadiso, hago una agenda en PHP, el cual me dice cuando tengo que ir a correr. Hoy es martes, entro al sistema, y el sistema me dice que el siguiente dia q me toca correr es Miercoles, con su respectiva fecha.

Problema: Escribir el script q utilice para crear el sistema.

Última edición por rudy69; 11/05/2012 a las 19:43
  #5 (permalink)  
Antiguo 11/05/2012, 22:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Test de Conocimiento, problema de prueba

De entrada y siendo estrictos, tiene razón truman_truman, faltan datos porque teniendo un dia de la semana, suponiendo que sea Tue... de dónde sacas año, mes y día del mes?

Supongo que quisiste decir que con la fecha actual (la de ayer) Tue 10-May/2012 obtengas el siguiente día en que debe ocurrir el evento (día de la semana, día del mes, mes y año).

Y la cosa es bastante fácil:

1. Tienes un arreglo para los nombres de los días:
$dias = array('Dom', 'Lun', 'Mar', Mié', 'Jue', 'Vie', 'Sáb');

Con PHP obtienes el día de la semana en forma numérica, donde 0 corresponde a domingo y 6 a sábado, exactamente como los almacenas en el arreglo.

2. No guardes el nombre del día, es mucho más sencillo si guardas el número, ejemplo:
En vez de: $randomDays = array('Mon', 'Wed', 'Fri');
Tendrías: $randomDays = array(1, 3, 5); // No es lo mismo, pero es igual

3. El día actual, continuando con la fecha dada (Tue 10-May/2012) es 4, digamos que es $today, sólo para referencia. Si no sabes obtenerlo, revisa la función date()

4. Necesitas recorrer $randomDays para saber cuál será el siguiente día en que ocurrirá el evento; sin pensarlo mucho, tal vez necesites una variable temporal ($nextDay), un foreach y un par de condiciones para saber cuál de esos 3 días (elementos en el arreglo) es el que corresponde.
(Omito sugerencias para ver si captas por dónde van los tiros y logras hacerlo).

5. Finalmente tendrás una operación sencilla, lógicamente, si partimos del Jueves 10-May/2012, el siguiente día será viernes y, tu variable $nextDay será 5 y calculamos la diferencia en días, para lo que necesitamos:
- Si $nextDay es menor que $today, entonces agregamos 7 a $nextDay... porqué?... pues porque si no lo hacemos así obtendremos una fecha anterior a la de hoy.
- $diferencia = $nextDay - $today
- Por último, la siguiente fecha es: strtotime("+{$diferencia} days"); // OJO: Si $diferencia es igual a 1, entonces en vez de days debe decir day

Te recomiendo leer el manual para strtotime(), para que aprendas a realizar operaciones básicas con fechas.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 12/05/2012, 01:21
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 4 meses
Puntos: 32
Respuesta: Test de Conocimiento, problema de prueba

Código PHP:
Ver original
  1. function nextWDayFor($customWDays, $outputFormat)
  2. {
  3.     $incDay = 0;
  4.     while(1) {
  5.         $nextTDay = strtotime('+'.$incDay.' day');
  6.         $nextWDay = date('D', $nextTDay);
  7.         foreach ( $customWDays as $cWDay ) {
  8.             if ( $nextWDay == $cWDay ) {
  9.                 return date($outputFormat, $nextTDay);
  10.             }
  11.         }
  12.         $incDay++;
  13.     }
  14. }
  15.  
  16. var customWeekDays =array('Mon', 'Wed', 'Fri');
  17. echo nextWDayFor($customWeekDays, 'D, M Y'); // Mon, May 2012, contando la fecha de este post.

Última edición por IXtremeLT; 12/05/2012 a las 01:39
  #7 (permalink)  
Antiguo 12/05/2012, 07:55
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Test de Conocimiento, problema de prueba

Tienen razon q me faltaba ese dato decirlo pero prnse q era obvio ash, bueno, estoy en el trabajo probare ese codigo cuando llegue a casa, imagine q algo asi era pero me trababa cuando x ejemplo sea un dia sabado, se tiene q reiniciar el array o no se XD
  #8 (permalink)  
Antiguo 12/05/2012, 08:19
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 4 meses
Puntos: 32
Respuesta: Test de Conocimiento, problema de prueba

Sale, no había probado mi código, te lo dejo ya con una pequeña correción, hehe.


Código PHP:
Ver original
  1. function nextWDayFor($customWDays, $outputFormat)
  2. {
  3.     $incDay = 1;
  4.     while(1) {
  5.         $nextTDay = strtotime('+'.$incDay.' day');
  6.         $nextWDay = date('D', $nextTDay);
  7.         foreach ( $customWDays as $cWDay ) {
  8.             if ( $nextWDay == $cWDay ) {
  9.                 return date($outputFormat, $nextTDay);
  10.             }
  11.         }
  12.         $incDay++;
  13.     }
  14. }
  15.  
  16. $customWeekDays = array('Mon', 'Wed', 'Sat');
  17. echo nextWDayFor($customWeekDays, 'D, d \o\f M Y'); // Mon, 14 of May 2012, contando la fecha de este post.

No es necesario que ordenes los días al azar.

Saludos!

Última edición por IXtremeLT; 12/05/2012 a las 12:42
  #9 (permalink)  
Antiguo 12/05/2012, 15:04
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
De acuerdo Respuesta: Test de Conocimiento, problema de prueba

Solo tres palabras que decir:

Sos mi tata!!!

XD, solo un detalle, cuando le pongo por ejemplo el dia de hoy, Sat, me tira hasta el de la siguiente semana, pero, eso ya lo puedo arreglar yo, gracias, tengo otro script/problema interesante al menos para mi si lo fue XD, gracias :D.

Antes programaba muchas cosas, pero ya tengo mas de un anio de no hacerlo, me he oxidado un poco :(

Última edición por rudy69; 12/05/2012 a las 15:11
  #10 (permalink)  
Antiguo 12/05/2012, 15:26
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Test de Conocimiento, problema de prueba

Solo se cambia el Cero por el Uno, asi como lo tenias anteriormente para que sea asi como yo digo XD, solucionado
  #11 (permalink)  
Antiguo 12/05/2012, 23:09
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 4 meses
Puntos: 32
Respuesta: Test de Conocimiento, problema de prueba

Hola!

Gracias! me alegra que te haya gustado, sobre lo que mencionas del "dia de hoy", si debe darte el dia siguiente de la semana no el mismo aunque este dentro del rango ya que de lo que estamos hablando es de "obtener el día de la semana siguiente". Por eso debe estar el 1 en $incDay, saludos!

Etiquetas: conocimiento, prueba, test, variables
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:19.