/** * Get interval for a month * * @param \Magento\Framework\Stdlib\DateTime\DateInterface $dateStart * @param \Magento\Framework\Stdlib\DateTime\DateInterface $dateEnd * @param bool $firstInterval * @return array */ protected function _getMonthInterval(\Magento\Framework\Stdlib\DateTime\DateInterface $dateStart, \Magento\Framework\Stdlib\DateTime\DateInterface $dateEnd, $firstInterval) { $interval = array(); $interval['period'] = $dateStart->toString('MM/yyyy'); if ($firstInterval) { $interval['start'] = $dateStart->toString('yyyy-MM-dd 00:00:00'); } else { $interval['start'] = $dateStart->toString('yyyy-MM-01 00:00:00'); } $lastInterval = $dateStart->compareMonth($dateEnd->getMonth()) == 0; if ($lastInterval) { $interval['end'] = $dateStart->setDay($dateEnd->getDay())->toString('yyyy-MM-dd 23:59:59'); } else { $interval['end'] = $dateStart->toString('yyyy-MM-' . date('t', $dateStart->getTimestamp()) . ' 23:59:59'); } $dateStart->addMonth(1); if ($dateStart->compareMonth($dateEnd->getMonth()) == 0) { $dateStart->setDay(1); } return $interval; }