¿Cómo puedo obtener el último día del mes en PHP?
Dado:
$a_date = "2009-11-23"
Quiero 2009-11-30; y dado
$a_date = "2009-12-23"
Quiero 2009-12-31.
t
devuelve el número de días en el mes de una fecha determinada (consulte los documentos paradate
):
$a_date = "2009-11-23";
echo date("Y-m-t", strtotime($a_date));
DateTime
usted puede hacer algo como esto:(new DateTime('2009-11-23'))->modify('last day of')
El código que usa strtotime () fallará después del año 2038. (como se indica en la primera respuesta en este hilo) Por ejemplo, intente usar lo siguiente:
Dará respuesta como: 1970-01-31
Entonces, en lugar de strtotime, se debe usar la función DateTime. El siguiente código funcionará sin el problema del año 2038:
fuente
strtotime
código me da este resultado: 2040-11-30Sé que esto es un poco tarde, pero creo que hay una manera más elegante de hacerlo
PHP 5.3+
usando la clase DateTime :fuente
$date = new DateTime('last day of 2020-2');
$date = DateTime::createFromFormat('m/d/Y', '1/10/2014');
También existe la función PHP integrada cal_days_in_month () ?
fuente
Esto debería funcionar:
fuente
Lo que está mal: lo más elegante para mí es usar
DateTime
Me pregunto si no veo
DateTime::createFromFormat
, una líneafuente
Puede crear una fecha para el primero del próximo mes y luego usar
strtotime("-1 day", $firstOfNextMonth)
fuente
mktime(0, 0, 0, $month+1, 0, $year);
strtotime()
ymktime()
se desalienta bec. de errores conocidos, como la determinación de la fecha al borde de los meses y los cálculos del año bisiesto. ComoDateTime
está disponible, debe usar esta clase para evitar problemas en el futuro. Como dije muchas veces antes que yo, ambos funcionanstrtotime()
ymktime()
fallarán después de 2038. Por eso voté en contra ...Intente esto, si está utilizando PHP 5.3+,
Para encontrar la última fecha del próximo mes, modifique de la siguiente manera,
y así..
fuente
Tu solución está aquí ...
fuente
31
para loSeptember
que, como saben, eso no es correcto.Puede encontrar el último día del mes de varias maneras. Pero simplemente puede hacer esto usando PHP strtotime () y la función date () . Me imagino que su código final se vería así:
Demo en vivo
Pero si está utilizando PHP> = 5.2, le sugiero que use el nuevo objeto DateTime. Por ejemplo, como a continuación:
Demo en vivo
Además, puede resolver esto usando su propia función como a continuación:
fuente
Si utiliza la extensión Carbon API para PHP DateTime, puede obtener el último día del mes con:
fuente
$date->day = 0;
También puedes usarlo con datetime
fuente
fuente
Usar Zend_Date es bastante fácil:
fuente
fuente
Aquí hay una función completa:
Esto generaría lo siguiente:
Salida: 28
fuente
Hay formas de obtener el último día del mes.
fuente
Llego tarde pero hay un puñado de maneras fáciles de hacer esto como se mencionó:
Usar mktime () es mi objetivo para tener un control completo sobre todos los aspectos del tiempo ... IE
Establecer el día en 0 y subir el mes 1 le dará el último día del mes anterior. El 0 y los números negativos tienen el mismo efecto en los diferentes argumentos. PHP: mktime - Manual
Como algunos han dicho, el tiempo de ejecución no es el camino más sólido y poco o nada es tan versátil.
fuente
Estoy usando strtotime con cal_days_in_month de la siguiente manera:
fuente
Lo he incluido en mi clase de ayuda de fecha y hora aquí https://github.com/normandqq/Date-Time-Helper usando
$dateLastDay = Model_DTHpr::getLastDayOfTheMonth();
Y esta hecho
fuente
Otra forma de usar mktime y no date ('t'):
De esta manera, calcula si son 31,30 o 29
fuente
Extensión API de carbono para PHP DateTime
o
volverá
fuente
http://zkinformer.com/?p=134
fuente
Esta es una forma mucho más elegante de llegar a fin de mes:
fuente
Puede usar "
t
" en la función de fecha para obtener la cantidad de días en un mes en particular.El código será algo como esto:
El código se explica por sí mismo. Así que espero que ayude.
fuente