function CStoreDatetime($timestamp = null, $time_shift_hours = null) { parent::CDatetime($timestamp); if ($time_shift_hours == null) { $time_shift_hours = modApiFunc('Configuration', 'getValue', SYSCONFIG_STORE_TIME_SHIFT); } $this->addHour($time_shift_hours); }
function __getCalendar($from, $to, $discontinuity) { $from_obj = new CDatetime($from); $to_obj = new CDatetime($to); $result = array(); // $month_start_flag = false; // // $month_end_flag = ($from_obj->getYear() < $to_obj->getYear()); $day_start_flag = false; // for ($year = $from_obj->getYear(); $year <= $to_obj->getYear(); $year++) { if ($discontinuity == DATETIME_PERIOD_DISCONTINUITY_YEAR) { $result[] = array('datetime_year' => $year); } else { // - $from_obj->getMonth(), . . // , 1 $month_start_num = $month_start_flag ? 1 : $from_obj->getMonth(); // , // 12 $month_end_num = $year < $to_obj->getYear() ? 12 : $to_obj->getMonth(); // for ($month = $month_start_num; $month <= $month_end_num; $month++) { if ($discontinuity == DATETIME_PERIOD_DISCONTINUITY_MONTH) { $result[] = array('datetime_year' => $year, 'datetime_month' => $month); } else { // : , , // 1 $day_start_num = $day_start_flag ? 1 : $from_obj->getMonthDay(); // : , // , $day_end_num = ($year <= $to_obj->getYear() and $month < $month_end_num) ? date("t", mktime(0, 0, 1, $month, 1, $year)) : $to_obj->getMonthDay(); for ($day = $day_start_num; $day <= $day_end_num; $day++) { $result[] = array('datetime_year' => $year, 'datetime_month' => $month, 'datetime_day' => $day); } $day_start_flag = true; } } // - // 1 $month_start_flag = true; } } return $result; }
function getLastYears($number, $include_current = CDATETIMEPERIODS_NOT_INCLUDING_CURRENT_ONE) { list($offset, $length) = $this->__getOffsetAndLength($number, $include_current); list($from_timestamp, $to_timestamp) = $this->getPeriod($offset * 12, CDATETIME_MONTH, $length * 12, CDATETIME_MONTH); $obj_from = new CDatetime($from_timestamp); $from_year = $obj_from->getYear(); $from = mktime(0, 0, 0, 1, 1, $from_year); $obj_to = new CDatetime($to_timestamp); $to_year = $obj_to->getYear(); $to = mktime(23, 59, 59, 12, 31, $to_year); return array($from, $to); }
private function _birthdateFieldHelper(&$obj) { $datetime = new CDatetime(); $obj->fieldType = 'birthdate'; // correct the age order if (is_array($obj->value) && $obj->value[1] > $obj->value[0]) { $obj->value = array_reverse($obj->value); } // TODO: something is wrong with comparing the datetime value // in text type instead of datetime type, // e.g. BETWEEN '1955-09-07 00:00:00' AND '1992-09-07 23:59:59' // we can't find '1992-02-26 23:59:59' in the result. if ($obj->condition == 'between') { $datetime->reset(); $datetime->manipulate('year', '-' . $obj->value[0]); $obj->value[0] = $datetime->toFormat('%Y-%m-%d 00:00:00'); $datetime->reset(); $datetime->manipulate('year', '-' . $obj->value[1]); //$datetime->manipulate('month', '12'); $obj->value[1] = $datetime->toFormat('%Y-%m-%d 23:59:59'); } if ($obj->condition == 'equal') { // equal to an age means the birthyear range is 1 year // so we make it become a range $obj->condition = 'between'; $datetime->reset(); $age = $obj->value; unset($obj->value); $datetime->manipulate('year', '-' . $age); $obj->value[0] = $datetime->toFormat('%Y-%m-%d 00:00:00'); $datetime->manipulate('month', '+12'); $datetime->manipulate('day', '-1'); $obj->value[1] = $datetime->toFormat('%Y-%m-%d 23:59:59'); } if ($obj->condition == 'lessthanorequal') { $obj->condition = 'between'; $age = $obj->value; unset($obj->value); $datetime->reset(); $datetime->manipulate('year', '-' . $age); $datetime->manipulate('month', '-12'); $obj->value[0] = $datetime->toFormat('%Y-%m-%d 00:00:00'); $datetime->reset(); $obj->value[1] = $datetime->toMySQL(true); } if ($obj->condition == 'greaterthanorequal') { $obj->condition = 'lessthanorequal'; //the datetime logic is inversed $age = $obj->value; unset($obj->value); $datetime->reset(); $datetime->manipulate('year', '-' . $age); $obj->value = $datetime->toFormat('%Y-%m-%d 12:59:59'); } // correct the date order if (is_array($obj->value) && $obj->value[1] < $obj->value[0]) { $obj->value = array_reverse($obj->value); } }