コード例 #1
0
 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);
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: search.php プロジェクト: bizanto/Hooked
 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);
     }
 }