コード例 #1
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;
 }
コード例 #2
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);
 }