Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: luchi en 5 Enero 2014, 22:50 pm



Título: Fechas en PHP
Publicado por: luchi en 5 Enero 2014, 22:50 pm
Hola. He encontrado por internet un ejercicio curioso, y esque por muchas vueltas que le he dado no me sale: "El día del trabajo en EEUU -Labor Day- se celebra el primer lunes de septiembre de cada año, visualiza las fechas en las que será el "Labor Day" desde 2014 a 2020". Éste es el enunciado, se debería poder hacer con funciones como "strtotime", "mktime" y similares (con el "date()" seguro que se hace). Lo que he entendido esque debería ser un bucle, pero no sé cómo hacer avanzar las fechas, sé que con strtotime se pueden hacer avanzar días, meses o años ¿pero cómo colocarlo en un lugar tan preciso como "el primer lunes de Septiembre"? mktime ya es más preciso ¿pero cómo hacerle avanzar? :rolleyes:


Título: Re: Fechas en PHP
Publicado por: #!drvy en 6 Enero 2014, 06:24 am
Lo bonito de strtotime() es que puedes usar fechas relativas. Asi, por ejemplo podemos pedirle que nos devuelva el timestamp del primer lunes de X mes de X año (lo que buscabas.. xD).
Código
  1. echo date('d',strtotime('first monday of september 2014'));

Esto te imprimira 01 ya que el primer lunes de septiembre de 2014 cae en el 1 xD. Luego solo te faltaria implementar el bucle..

Código
  1. <?php
  2. $anos = 5; // 5 años mas el actual (6 en total)
  3. $actual = date('Y');
  4.  
  5. for($i=$actual; $i<=($actual+$anos); ++$i){
  6.   echo 'El primer lunes de septiembre en '.($i).' sera el día: ';
  7.   echo date('d',strtotime('first monday of september '.($i))).'<br />';
  8. }
  9. ?>

Resultado:
Código
  1. El primer lunes de septiembre en 2014 sera el dia: 01
  2. El primer lunes de septiembre en 2015 sera el dia: 07
  3. El primer lunes de septiembre en 2016 sera el dia: 05
  4. El primer lunes de septiembre en 2017 sera el dia: 04
  5. El primer lunes de septiembre en 2018 sera el dia: 03
  6. El primer lunes de septiembre en 2019 sera el dia: 02

Saludos