Estoy jugando con los formatos relativos a la fecha de PHP y tratando de obtener el 20 del mes actual o el 20 del mes de una fecha determinada.

Esperaba usar algo como first day of this month +20 days, pero aún devuelve el primero del mes actual.

Sé que podría usar el método modify() dos veces, pero aún espero que haya una manera de evitarlo :-)

¿Estoy haciendo algo mal o simplemente no es posible?

0
Artur Smolen 9 dic. 2020 a las 14:57

2 respuestas

La mejor respuesta

Porque el analizador lee las palabras "first day of this month" y luego devuelve inmediatamente el primer día del mes actual sin tener en cuenta lo que viene después: https://www.php.net/manual/en/datetime.formats.relative.php#118062. También hay muchas excepciones explicadas que se discuten en la página vinculada.

Por lo general, en mi experiencia, lo mejor que se puede hacer es evitar la sintaxis relativa tanto como sea posible y usar la interfaz DateTime (inmutable). Trabajar con fechas y horas es bastante difícil con una buena interfaz, no importa con una característica mal documentada.

0
Loek 9 dic. 2020 a las 12:07
$d = date('Y-m-1'); //returns first day of current month date('Y-5-1'); for any  month given
echo date("D Y-m-d",strtotime($d.' +19 day'));
0
Hammad Ahmed khan 9 dic. 2020 a las 12:10
65216311