- var_dump: documentation ( source)
- sprintf: documentation ( source)
<?php
$startDate = new \DateTime();
$startDate->setDate(2014, 01, 29);
$startDate->setTime(0, 0, 0);
var_dump($startDate);
$nextMonth = clone $startDate;
$nextMonth->modify('+ 14 days');
var_dump($nextMonth);
$startDate->add(new DateInterval(sprintf('P%dD', $nextMonth->format('t'))));
$startDate->sub(new DateInterval('P1D'));
$startDate->setTime(23, 59, 59);
var_dump($startDate);