2011-09-24 16 views
43

Desidero riscrivere una query mysql che utilizza le funzioni month() e year() per visualizzare tutti i post di un determinato mese che vanno alla mia funzione di 'Ymd 'il formato del parametro, ma non so come posso ottenere l'ultimo giorno della data del mese dato.come ottenere il primo e l'ultimo giorno di un determinato mese

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

risposta

98

Si potrebbe desiderare di guardare ai strtotime e date funzioni.

<?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: il tuo approccio è più intelligente. Non c'è bisogno di esplodere. –

+0

cosa succede se $ query_date proviene da php come formato 'd-m-Y': '02 -04-2010 '? Durante i miei test, va bene, ma forse non ho provato tutte le situazioni. Devo convertire in Y-m-d, o strtotime, capirlo comunque. –

+0

Il formato "d-m-Y" è supportato. I formati supportati sono elencati su [http://ca2.php.net/manual/en/datetime.formats.date.php](http://ca2.php.net/manual/en/datetime.formats.date. php). –

0

In sostanza:

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

Data t numero giorni parametro di ritorno nel mese in corso.

4

cal_days_in_month() dovrebbe fornire il numero totale di giorni nel mese e, quindi, l'ultimo.

+0

Grazie per aver condiviso. Non ho mai usato il modulo PHP di calendario prima. Detto ciò, vale la pena sottolineare che il modulo * potrebbe * non essere installato, specialmente su un host condiviso. –

5

So che questa domanda ha una buona risposta con "t", ma ho pensato di aggiungere un'altra soluzione.

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

Prova questa, se si utilizza PHP 5.3+, in 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'); 

Per trovare il mese prossimo ultima data, modificare come segue,

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

e così via ..

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'); 
Problemi correlati