/** * Calculates the first day of the given period depending on the given date. * * For period Weeks: Last day of a week is always sunday * * @param class_date_period_enum $objPeriod * @param class_date $objDate * * @return class_date */ public function lastDayOfThis(class_date_period_enum $objPeriod, class_date $objDate) { $strRelativeString = ""; if ($objPeriod->equals(class_date_period_enum::YEAR())) { $strRelativeString = "last day of december"; } else { if ($objPeriod->equals(class_date_period_enum::HALFYEAR())) { $intMonth = $objDate->getIntMonth(); if ($intMonth < 7) { $strRelativeString = "last day of june"; } else { $strRelativeString = "last day of december"; } } else { if ($objPeriod->equals(class_date_period_enum::QUARTER())) { $intMonth = $objDate->getIntMonth(); if ($intMonth < 4) { $strRelativeString = "last day of march"; } elseif ($intMonth > 3 && $intMonth < 7) { $strRelativeString = "last day of june"; } elseif ($intMonth > 6 && $intMonth < 10) { $strRelativeString = "last day of september"; } elseif ($intMonth > 9) { $strRelativeString = "last day of december"; } } else { if ($objPeriod->equals(class_date_period_enum::MONTH())) { $strRelativeString = "last day of this month"; } else { if ($objPeriod->equals(class_date_period_enum::WEEK())) { if ($objDate->getIntDayOfWeek() == 0) { $strRelativeString = "now"; } else { //check if correct? $strRelativeString = "sunday this week"; } } } } } } $objNewDate = self::calcDateRelativeFormatString($objDate, $strRelativeString); $objNewDate->setIntHour($objDate->getIntHour()); $objNewDate->setIntMin($objDate->getIntMin()); $objNewDate->setIntSec($objDate->getIntSec()); return $objNewDate; }