una ultimo sumar primer obtener mostrar meses mes los fecha dias array anterior php datetime

ultimo - Encontrando el último día del mes anterior en PHP



primer dia y ultimo dia del mes php (5)

No estoy seguro de por qué esto no puede encontrar el último día del mes anterior. Todos los pasos parecen funcionar correctamente, excepto cuando se crea la fecha final.

<?php $currentMonth = date(''n''); $currentYear = date(''Y''); if($currentMonth == 1) { $lastMonth = 12; $lastYear = $currentYear - 1; } else { $lastMonth = $currentMonth -1; $lastYear = $currentYear; } if($lastMonth < 10) { $lastMonth = ''0'' . $lastMonth; } $lastDayOfMonth = date(''t'', $lastMonth); $lastDateOfPreviousMonth = $lastYear . ''-'' . $lastMonth . ''-'' . $lastDayOfMonth; $newLastDateOfMonth = date(''F j, Y'', strtotime($lastDateOfPreviousMonth)); ?>

$lastDateOfPreviousMonth regresará el 2012-09-30 como se esperaba; sin embargo, después de intentar convertirlo al 30 de septiembre de 2012, $newLastDateOfMonth regresará el 1 de octubre de 2012. ¿Dónde me parece que me estoy yendo mal?

EDITAR: Si usa la date("t/m/Y", strtotime("last month")); o date(''Ym-d'', strtotime(''last day of previous month'')); ¿Alguno de estos seguirá siendo viable a partir del 2013-01-01, es decir, tendrán en cuenta el cambio en el año?


Hay una función php para esto.

echo date("t/m/Y", strtotime("last month"));


Primer día de este mes, menos 1 segundo.

echo date(''Y-m-d'',strtotime(''-1 second'',strtotime(date(''m'').''/01/''.date(''Y''))));

Ejemplo here .


Puedes usar la funcionalidad de manejo de cero de strtotime() para lograr esto también:

# Day Before echo date(''Y-m-d'', strtotime(''2016-03-00'')); // 2016-02-29 # Year can be handled too echo date(''Y-m-d'', strtotime(''2016-01-00'')); // 2015-12-31 # Month Before echo date(''Y-m-d'', strtotime(''2016-00-01'')); // 2015-12-01 # Month AND Day echo date(''Y-m-d'', strtotime(''2016-00-00'')); // 2015-11-30

Tiene sentido si piensa en 00 como ''uno menos que el primero (01)''.

Entonces, para lograr el objetivo de esta pregunta, el ''último día del mes anterior'' es un caso simple de

date(''your_format'', strtotime(''YYYY-ThisMonth-00'')); # So: date(''Y-m-d'', strtotime(''2016-11-00'')); // 2016-10-31


por favor intente con la siguiente respuesta.

código:

echo date("t/m/Y", strtotime("-1 months"));

Obtendrá el último día de los 12 meses anteriores.

Ejemplo:

<?php for ($i = 1; $i <= 12; $i++) { $months[] = date("t/m/Y l", strtotime(" -$i months")); } print_r($months); ?>

Salida:

Array ( [0] => 30/11/2018 Monday [1] => 31/10/2018 Friday [2] => 30/09/2018 Wednesday [3] => 31/08/2018 Sunday [4] => 31/07/2018 Thursday [5] => 30/06/2018 Tuesday [6] => 31/05/2018 Saturday [7] => 30/04/2018 Thursday [8] => 31/03/2018 Monday [9] => 28/02/2018 Monday [10] => 31/01/2018 Friday [11] => 31/12/2017 Tuesday )