2011-09-24 25 views
43

Deseo reescribir una consulta de mysql que use las funciones de mes() y año() para mostrar todas las publicaciones de un cierto mes que va a mi función como 'Ymd 'formato de parámetro, pero no sé cómo puedo obtener el último día de la fecha del mes dado.cómo obtener el primer y último día de un mes dado

$query_date = '2010-02-04'; 
list($y, $m, $d) = explode('-', $query_date); 
$first_day = $y . '-' . $m . '-01'; 

Respuesta

98

Es posible que desee mirar a los strtotime y date funciones.

<?php 

$query_date = '2010-02-04'; 

// First day of the month. 
echo date('Y-m-01', strtotime($query_date)); 

// Last day of the month. 
echo date('Y-m-t', strtotime($query_date)); 
+0

ty: su enfoque es más inteligente. No es necesario explotar. –

+0

¿Qué ocurre si $ query_date proviene de php como formato 'd-m-Y': '02 -04-2010 '? En mis pruebas, todo va bien, pero tal vez no probé todas las situaciones. ¿Tengo que convertir a Y-m-d, o strtotime, entenderlo de todos modos. –

+0

El formato "d-m-Y" es compatible. Los formatos admitidos se enumeran en [http://ca2.php.net/manual/en/datetime.formats.date.php](http://ca2.php.net/manual/en/datetime.formats.date. php). –

0

Básicamente:

$lastDate = date("Y-m-t", strtotime($query_d)); 

Fecha t número de período de retorno del parámetro en el mes actual.

4

cal_days_in_month() debería dar el número total de días en el mes, y por lo tanto, el último.

+0

Gracias por compartir. Nunca utilicé el módulo Calendario PHP antes. Dicho esto, vale la pena señalar que el módulo * puede * no estar instalado, especialmente en un host compartido. –

5

Sé que esta pregunta tiene una buena respuesta con 't', pero pensé en agregar otra solución.

$first = date("Y-m-d", strtotime("first day of this month")); 
$last = date("Y-m-d", strtotime("last day of this month")); 
6

probar esto, si usted está usando PHP 5.3+, en php

$query_date = '2010-02-04'; 
$date = new DateTime($query_date); 
//First day of month 
$date->modify('first day of this month'); 
$firstday= $date->format('Y-m-d'); 
//Last day of month 
$date->modify('last day of this month'); 
$lastday= $date->format('Y-m-d'); 

Para encontrar el próximo mes última fecha, modifique de la siguiente manera,

$date->modify('last day of 1 month'); 
echo $date->format('Y-m-d'); 

y así sucesivamente ..

1
// First date of the current date 
echo date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y'))); 
echo '<br />'; 
// Last date of the current date 
echo date('Y-m-d', mktime(0, 0, 0, date('m')+1, 0, date('Y'))); 
1
$month = 10; // october 

$firstday = date('01-' . $month . '-Y'); 
$lastday = date(date('t', strtotime($firstday)) .'-' . $month . '-Y'); 
Cuestiones relacionadas