strtodate español day php date strtotime

español - PHP strtotime+1 mes agregando un mes adicional



strtotime to date (7)

Esta pregunta ya tiene una respuesta aquí:

Tengo una variable simple que agrega un mes a hoy:

$endOfCycle = date("Y-m", strtotime("+1 month"));

Hoy es enero de 2013, por lo que esperaría volver 2013-02, pero en su lugar obtendré 2013-03. No puedo entender por qué es saltar a marzo.


Esto debería ser

$endOfCycle=date(''Y-m-d'', strtotime("+30 days"));

strtotime

espera recibir una cadena que contenga un formato de fecha en inglés de EE. UU. e intentará analizar ese formato en una marca de hora Unix (el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC), en relación con la marca de hora que se proporciona ahora, o la hora actual si ahora no se suministra.

mientras

date

Devuelve una cadena formateada de acuerdo con la cadena de formato dada utilizando la marca de tiempo del entero dado o la hora actual si no se proporciona una marca de hora.

Vea las páginas del manual para:


Puedes usar este código para obtener el próximo mes:

$ts = mktime(0, 0, 0, date("n") + 1, 1); echo date("Y-m-d H:i:s", $ts); echo date("n", $ts);

Suponiendo que hoy es el 2013-01-31 01:23:45 lo anterior:

2013-02-01 00:00:00 2


Salta a marzo porque hoy es el 29 de enero, y agregar un mes da el 29 de febrero, que no existe, por lo que se está moviendo a la siguiente fecha válida.

Esto también ocurrirá el 31 de muchos meses, pero obviamente es más notorio en el caso de enero a febrero porque febrero es más corto.

Si no está interesado en el día del mes y solo desea que aparezca el próximo mes, debe especificar la fecha de entrada como el primero del mes actual. Esto siempre le dará la respuesta correcta si agrega un mes.

Por la misma razón, si desea obtener siempre el último día del mes siguiente, debe comenzar calculando el primer día del mes posterior al que desea y restando un día.


Tal vez porque es el 2013-01-29 por lo que el mes +1 sería el 2013-02-29, que no existe, por lo que sería el 2013-03-01

Tu podrías intentar

date(''m/d/y h:i a'',(strtotime(''next month'',strtotime(date(''m/01/y'')))));

de los comentarios en http://php.net/manual/en/function.strtotime.php


hoy es 29 de enero, +1 mes significa 29 de febrero, pero como febrero consta de 28 días este año, se superpone al siguiente día, que es el 1 de marzo

en lugar de eso intenta

strtotime(''next month'')


prueba esto:

$endOfCycle = date("Y-m", time()+2592000);

Esto agrega 30 días, no exactamente un mes difícil.


$endOfCycle = date("Y-m", mktime(0, 0, 0, date("m", time())+1 , 15, date("m", time())));