entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problemas entre fechas

Hola saludos.

Tengo un problema con fechas en php. resulta que requiero que un usuario seleccione una fecha mediante el calendario, osea el usuario de click en el dia 29, entonces el siguiente mes me deve mostrar el dia 29 en un array algo como esto
Array
(
[1] => 2017-09-23
[2] => 2017-10-23
[3] => 2017-11-23
[4] => 2017-12-23
[5] => 2018-01-23
[6] => 2018-02-23
[7] => 2018-03-23
[8] => 2018-04-23
[9] => 2018-05-23
[10] => 2018-06-23
[11] => 2018-07-23
[12] => 2018-08-23
[13] => 2018-09-23
[14] => 2018-10-23
[15] => 2018-11-23
[16] => 2018-12-23
)

selecciono el dia 23 entonces en ese array me muestra los dias 23 de cada mes, pero que pasa si el usuario seleciona un 29 y el array del siguiente año no es viciesto traiendo 28 dias. como hacer para que cuando sean 29,30 o 31 el sistema me reconosca en base al mes y me reste uno en caso de que el dia sea 31 y el mes siguiente traiga 30.

Array
(
[1] => 2017-09-29
[2] => 2017-10-29
[3] => 2017-11-29
[4] => 2017-12-29
[5] => 2018-01-29
[6] => 2018-02-28
[7] => 2018-03-29
[8] => 2018-04-29
[9] => 2018-05-29
[10] => 2018-06-29
[11] => 2018-07-29
[12] => 2018-08-29
[13] => 2018-09-29
[14] => 2018-10-29
[15] => 2018-11-29
[16] => 2018-12-29
)
el flujo que requiero es como este que acabo de poner o

Array
(
[1] => 2017-08-31
[1] => 2017-09-30
[2] => 2017-10-31
[3] => 2017-11-30
[4] => 2017-12-31
[5] => 2018-01-31
[6] => 2018-02-28
[7] => 2018-03-31
[8] => 2018-04-30
[9] => 2018-05-31
[10] => 2018-06-30
[11] => 2018-07-31
[12] => 2018-08-31
[13] => 2018-09-30
[14] => 2018-10-31
[15] => 2018-11-30
[16] => 2018-12-31
)

lo estoy manejando con DateTime()

espero y alguien me pueda dar una luz, por que no logro hacer que quede como debe de ser ;(
de antemano gracias.

2votos

carlossevi comentado

¿Puedes poner el código que estas utilizando?

1 Respuesta

1voto

versce123mx Puntos1990

Este es el codigo que utilice para resolver esa problematica

<?php
function addMonths($date,$months) {
  $orig_day = $date->format("d");
  $date->modify("+".$months." months");
  while ($date->format("d")<$orig_day && $date->format("d")<5) {
    $date->modify("-1 day");
  }
}

for ($i=0;$i<16;$i++) {
  $d = new DateTime("2017-08-31");
  addmonths($d,$i);
  //echo $d->format("Y-m-d")."<br>";
}

0voto

Peter comentado

Gracias por compartir la solución.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta