25

Possible Duplicate:
PHP last day of the month

Is there any function like $date->getMonthDays() or $date->getLastDayOfMonth() in PHP to get the number of days in a given month (or the last day number)?

$start = new DateTime('2012-02-01');
$end   = clone $start;

// Interval = last day of the month minus current day in $start
$interval = $start->getLastDayOfMonth() - intval($start->format('j'));
$end->add(new DateInterval('P' . $interval . 'D'));

EDIT: thanks, voted to close, it's a duplicate, sorry for asking...

Community
  • 1
  • 1
gremo
  • 47,186
  • 75
  • 257
  • 421

3 Answers3

72

The php date function gives you the number of days in the month with 't'

date("t");

See: http://php.net/manual/en/function.date.php

Preau
  • 903
  • 7
  • 10
29

It's simple to get last month date

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

at March 3 returns

2011-02-28
2011-02-1
MartijnG
  • 815
  • 4
  • 12
  • 24
6

t gives you the total number of days in the current month. j gives you the current day of the month.

Using modify and some subtraction from format-ing the datetime, you can get to the end of the month.

$date = new DateTime();
$lastDayOfMonth = $date->modify(
  sprintf('+%d days', $date->format('t') - $date->format('j'))
);
Brad Christie
  • 100,477
  • 16
  • 156
  • 200