Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/05/2012, 22:51
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 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