当前位置: 首页>>代码示例>>PHP>>正文


PHP Date_Calc::daysInMonth方法代码示例

本文整理汇总了PHP中Date_Calc::daysInMonth方法的典型用法代码示例。如果您正苦于以下问题:PHP Date_Calc::daysInMonth方法的具体用法?PHP Date_Calc::daysInMonth怎么用?PHP Date_Calc::daysInMonth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Date_Calc的用法示例。


在下文中一共展示了Date_Calc::daysInMonth方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: NWeekdayOfMonth

 /**
  * Calculates the date of the Nth weekday of the month,
  * such as the second Saturday of January 2000.
  *
  * @param string occurance: 1=first, 2=second, 3=third, etc.
  * @param string dayOfWeek: 0=Sunday, 1=Monday, etc.
  * @param string year in format CCYY
  * @param string month in format MM
  * @param string format for returned date
  *
  * @access public
  *
  * @return string date in given format
  */
 function NWeekdayOfMonth($occurance, $dayOfWeek, $month, $year, $format = "%Y%m%d")
 {
     $year = sprintf("%04d", $year);
     $month = sprintf("%02d", $month);
     $DOW1day = sprintf("%02d", ($occurance - 1) * 7 + 1);
     $DOW1 = Date_Calc::dayOfWeek($DOW1day, $month, $year);
     $wdate = ($occurance - 1) * 7 + 1 + (7 + $dayOfWeek - $DOW1) % 7;
     if ($wdate > Date_Calc::daysInMonth($month, $year)) {
         return -1;
     } else {
         return Date_Calc::dateFormat($wdate, $month, $year, $format);
     }
 }
开发者ID:noikiy,项目名称:owaspbwa,代码行数:27,代码来源:Calc.php

示例2: getDaysInMonth

 /**
  * Gets number of days in the month for this date
  *
  * Gets number of days in the month for this date
  *
  * @access public
  * @return int number of days in this month
  */
 function getDaysInMonth()
 {
     return Date_Calc::daysInMonth($this->month, $this->year);
 }
开发者ID:mickdane,项目名称:zidisha,代码行数:12,代码来源:Date.php

示例3: nWeekdayOfMonth

 /**
  * Calculates the date of the Nth weekday of the month,
  * such as the second Saturday of January 2000
  *
  * @param int    $week   the number of the week to get
  *                        (1 = first, etc.  Also can be 'last'.)
  * @param int    $dow    the day of the week (0 = Sunday)
  * @param int    $month  the month
  * @param int    $year   the year.  Use the complete year instead of the
  *                        abbreviated version.  E.g. use 2005, not 05.
  * @param string $format the string indicating how to format the output
  *
  * @return   string     the date in the desired format
  * @access   public
  * @static
  */
 function nWeekdayOfMonth($week, $dow, $month, $year, $format = DATE_CALC_FORMAT)
 {
     if (is_numeric($week)) {
         $DOW1day = ($week - 1) * 7 + 1;
         $DOW1 = Date_Calc::dayOfWeek($DOW1day, $month, $year);
         $wdate = ($week - 1) * 7 + 1 + (7 + $dow - $DOW1) % 7;
         if ($wdate > Date_Calc::daysInMonth($month, $year)) {
             return -1;
         } else {
             return Date_Calc::dateFormat($wdate, $month, $year, $format);
         }
     } elseif ($week == 'last' && $dow < 7) {
         $lastday = Date_Calc::daysInMonth($month, $year);
         $lastdow = Date_Calc::dayOfWeek($lastday, $month, $year);
         $diff = $dow - $lastdow;
         if ($diff > 0) {
             return Date_Calc::dateFormat($lastday - (7 - $diff), $month, $year, $format);
         } else {
             return Date_Calc::dateFormat($lastday + $diff, $month, $year, $format);
         }
     } else {
         return -1;
     }
 }
开发者ID:222elm,项目名称:dotprojectFrame,代码行数:40,代码来源:Calc.php

示例4: getDaysInMonth

 /**
  * Returns the number of days in a month, given year and month
  * @param int year (2003)
  * @param int month (9)
  * @return int days in month
  * @access protected
  */
 function getDaysInMonth($y, $m)
 {
     return (int) Date_Calc::daysInMonth($m, $y);
 }
开发者ID:BackupTheBerlios,项目名称:phpalmanac-svn,代码行数:11,代码来源:PearDate.php

示例5: getSummerTimeLimitDay

 /**
  * Returns day on which Summer time starts or ends for given year
  *
  * The limit (start or end) code can take the following forms:
  *  5                 the fifth of the month
  *  lastSun           the last Sunday in the month
  *  lastMon           the last Monday in the month
  *  Sun>=8            first Sunday on or after the 8th
  *  Sun<=25           last Sunday on or before the 25th
  *
  * @param string $ps_summertimelimitcode code which specifies Summer time
  *                                        limit day
  * @param int    $pn_month               start or end month
  * @param int    $pn_year                year for which to calculate Summer
  *                                        time limit day
  *
  * @return   int
  * @access   private
  * @since    Method available since Release 1.5.0
  */
 function getSummerTimeLimitDay($ps_summertimelimitcode, $pn_month, $pn_year)
 {
     if (preg_match('/^[0-9]+$/', $ps_summertimelimitcode)) {
         $hn_day = $ps_summertimelimitcode;
     } else {
         if (!isset($ha_daysofweek)) {
             static $ha_daysofweek = array("Sun" => 0, "Mon" => 1, "Tue" => 2, "Wed" => 3, "Thu" => 4, "Fri" => 5, "Sat" => 6);
         }
         if (preg_match('/^last(Sun|Mon|Tue|Wed|Thu|Fri|Sat)$/', $ps_summertimelimitcode, $ha_matches)) {
             list($hn_nmyear, $hn_nextmonth, $hn_nmday) = explode(" ", Date_Calc::beginOfMonthBySpan(1, $pn_month, $pn_year, "%Y %m %d"));
             list($hn_year, $hn_month, $hn_day) = explode(" ", Date_Calc::prevDayOfWeek($ha_daysofweek[$ha_matches[1]], $hn_nmday, $hn_nextmonth, $hn_nmyear, "%Y %m %d", false));
             // not including
             // this day
             if ($hn_month != $pn_month) {
                 // This code happen legitimately if the calendar jumped some days
                 // e.g. in a calendar switch, or the limit day is badly defined:
                 //
                 $hn_day = Date_Calc::getFirstDayOfMonth($pn_month, $pn_year);
             }
         } else {
             if (preg_match('/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat)([><]=)([0-9]+)$/', $ps_summertimelimitcode, $ha_matches)) {
                 if ($ha_matches[2] == "<=") {
                     list($hn_year, $hn_month, $hn_day) = explode(" ", Date_Calc::prevDayOfWeek($ha_daysofweek[$ha_matches[1]], $ha_matches[3], $pn_month, $pn_year, "%Y %m %d", true));
                     // including
                     // this day
                     if ($hn_month != $pn_month) {
                         $hn_day = Date_Calc::getFirstDayOfMonth($pn_month, $pn_year);
                     }
                 } else {
                     list($hn_year, $hn_month, $hn_day) = explode(" ", Date_Calc::nextDayOfWeek($ha_daysofweek[$ha_matches[1]], $ha_matches[3], $pn_month, $pn_year, "%Y %m %d", true));
                     // including
                     // this day
                     if ($hn_month != $pn_month) {
                         $hn_day = Date_Calc::daysInMonth($pn_month, $pn_year);
                     }
                 }
             }
         }
     }
     return $hn_day;
 }
开发者ID:alxstuart,项目名称:ajfs.me,代码行数:61,代码来源:TimeZone.php

示例6: NWeekdayOfMonth

 /**
  * Calculates the date of the Nth weekday of the month,
  * such as the second Saturday of January 2000.
  *
  * @param string occurance: 1=first, 2=second, 3=third, etc.
  * @param string dayOfWeek: 0=Sunday, 1=Monday, etc.
  * @param string year in format CCYY
  * @param string month in format MM
  * @param string format for returned date
  *
  * @access public
  *
  * @return string date in given format
  */
 public function NWeekdayOfMonth($occurance, $dayOfWeek, $month, $year, $format = "%Y-%m-%d")
 {
     $year = sprintf("%04d", $year);
     $month = sprintf("%02d", $month);
     $DOW1day = sprintf("%02d", ($occurance - 1) * 7 + 1);
     $DOW1 = Date_Calc::dayOfWeek($DOW1day, $month, $year);
     $wdate = ($occurance - 1) * 7 + 1 + (7 + $dayOfWeek - $DOW1) % 7;
     if ($wdate > Date_Calc::daysInMonth($month, $year)) {
         if ($occurance == 5) {
             // Getting the last day overshot the month, go back a week
             $wdate -= 7;
             return Date_Calc::dateFormat($wdate, $month, $year, $format);
         } else {
             // For $occurance === 1 through 4 this is an error
             return -1;
         }
     } else {
         return Date_Calc::dateFormat($wdate, $month, $year, $format);
     }
 }
开发者ID:NewRoute,项目名称:lglib,代码行数:34,代码来源:DateCalc.class.php

示例7: postcalendar_calendarblock_display

/**
 * display block
 */
function postcalendar_calendarblock_display($blockinfo)
{
    // You supposed to be here?
    if (!pnSecAuthAction(0, 'PostCalendar:calendarblock:', "{$blockinfo['title']}::", ACCESS_OVERVIEW)) {
        return false;
    }
    // find out what view we're using
    $template_view = pnVarCleanFromInput('tplview');
    if (!isset($template_view)) {
        $template_view = 'default';
    }
    // find out what template we're using
    $template_name = _SETTING_TEMPLATE;
    if (!isset($template_name) || empty($template_name)) {
        $template_name = 'default';
    }
    // What is today's correct date
    $Date =& postcalendar_getDate();
    // Get variables from content block
    $vars = unserialize($blockinfo['content']);
    $showcalendar = $vars['pcbshowcalendar'];
    $showevents = $vars['pcbeventoverview'];
    $eventslimit = $vars['pcbeventslimit'];
    $nextevents = $vars['pcbnextevents'];
    $pcbshowsslinks = $vars['pcbshowsslinks'];
    $pcbeventsrange = $vars['pcbeventsrange'];
    // Let's setup the info to build this sucka!
    $the_year = substr($Date, 0, 4);
    $the_month = substr($Date, 4, 2);
    $the_day = substr($Date, 6, 2);
    $uid = pnUserGetVar('uid');
    $cacheid1 = $cacheid2 = $cacheid3 = '';
    $theme = pnUserGetTheme();
    pnThemeLoad($theme);
    global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5;
    global $textcolor1, $textcolor2;
    // 20021125 - rraymond :: we have to do this to make it work with envolution
    $pcModInfo = pnModGetInfo(pnModGetIDFromName(__POSTCALENDAR__));
    $pcDir = pnVarPrepForOS($pcModInfo['directory']);
    require_once "modules/{$pcDir}/pnincludes/Smarty/Config_File.class.php";
    unset($pcModInfo);
    // set up Smarty
    $tpl =& new pcSmarty();
    // setup the Smarty cache id
    $templates_cached = true;
    if ($showcalendar) {
        $cacheid1 = md5($Date . 'M' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme);
        if (!$tpl->is_cached($template_name . '/views/calendarblock/month_view.html', $cacheid1)) {
            $templates_cached = false;
        }
    }
    if ($showevents) {
        $cacheid2 = md5($Date . 'T' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme);
        if (!$tpl->is_cached($template_name . '/views/calendarblock/todays_events.html', $cacheid2)) {
            $templates_cached = false;
        }
    }
    if ($nextevents) {
        $cacheid3 = md5($Date . 'U' . $template_view . $template_name . $showcalendar . $showevents . $nextevents . $uid . $theme);
        if (!$tpl->is_cached($template_name . '/views/calendarblock/upcoming_events.html', $cacheid3)) {
            $templates_cached = false;
        }
    }
    // start the output container
    $output = pnModAPIFunc(__POSTCALENDAR__, 'user', 'pageSetup');
    // if one of the templates is not cached, we need to run the following
    if (!$templates_cached) {
        // set up the next and previous months to move to
        $prev_month = Date_Calc::beginOfPrevMonth(1, $the_month, $the_year, '%Y%m%d');
        $next_month = Date_Calc::beginOfNextMonth(1, $the_month, $the_year, '%Y%m%d');
        $last_day = Date_Calc::daysInMonth($the_month, $the_year);
        $pc_prev = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $prev_month));
        $pc_next = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => $next_month));
        $pc_month_name = pnModAPIFunc(__POSTCALENDAR__, 'user', 'getmonthname', array('Date' => mktime(0, 0, 0, $the_month, $the_day, $the_year)));
        $month_link_url = pnModURL(__POSTCALENDAR__, 'user', 'view', array('tplview' => $template_view, 'viewtype' => 'month', 'Date' => date('Ymd', mktime(0, 0, 0, $the_month, 1, $the_year))));
        $month_link_text = $pc_month_name . ' ' . $the_year;
        //*******************************************************************
        //  Here we get the events for the current month view
        //*******************************************************************
        $day_of_week = 1;
        $pc_month_names = array(_CALJAN, _CALFEB, _CALMAR, _CALAPR, _CALMAY, _CALJUN, _CALJUL, _CALAUG, _CALSEP, _CALOCT, _CALNOV, _CALDEC);
        $pc_short_day_names = array(_CALSUNDAYSHORT, _CALMONDAYSHORT, _CALTUESDAYSHORT, _CALWEDNESDAYSHORT, _CALTHURSDAYSHORT, _CALFRIDAYSHORT, _CALSATURDAYSHORT);
        $pc_long_day_names = array(_CALSUNDAY, _CALMONDAY, _CALTUESDAY, _CALWEDNESDAY, _CALTHURSDAY, _CALFRIDAY, _CALSATURDAY);
        switch (_SETTING_FIRST_DAY_WEEK) {
            case _IS_MONDAY:
                $pc_array_pos = 1;
                $first_day = date('w', mktime(0, 0, 0, $the_month, 0, $the_year));
                $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year));
                if ($end_dow != 0) {
                    $the_last_day = $last_day + (7 - $end_dow);
                } else {
                    $the_last_day = $last_day;
                }
                break;
            case _IS_SATURDAY:
                $pc_array_pos = 6;
                $first_day = date('w', mktime(0, 0, 0, $the_month, 2, $the_year));
//.........这里部分代码省略.........
开发者ID:juggernautsei,项目名称:openemr,代码行数:101,代码来源:calendar.php

示例8: getTableViewCells

 /**
  * @param $start
  * @param $startNext
  * @param string $view
  * @param int $firstWeekDay
  * @return array
  */
 function getTableViewCells($start, $startNext, $view = 'month', $firstWeekDay = 0)
 {
     // start of the view
     $viewStart = $start;
     $nbBackDays = $start['weekDay'] < $firstWeekDay ? 6 : $start['weekDay'] - $firstWeekDay;
     if ($nbBackDays == 0) {
         $viewStart['daysInMonth'] = Date_Calc::daysInMonth($viewStart['month'], $viewStart['year']);
     } elseif ($start['day'] - $nbBackDays < 0) {
         $viewStart['month'] = $start['month'] == 1 ? 12 : $start['month'] - 1;
         $viewStart['year'] = $start['month'] == 1 ? $start['year'] - 1 : $start['year'];
         $viewStart['daysInMonth'] = Date_Calc::daysInMonth($viewStart['month'], $viewStart['year']);
         $viewStart['day'] = $viewStart['daysInMonth'] - $nbBackDays + 1;
         $viewStart['date'] = TikiLib::make_time(0, 0, 0, $viewStart['month'], $viewStart['day'], $viewStart['year']);
     } else {
         $viewStart['daysInMonth'] = Date_Calc::daysInMonth($viewStart['month'], $viewStart['year']);
         $viewStart['day'] = $viewStart['day'] - $nbBackDays;
         $viewStart['date'] = TikiLib::make_time(0, 0, 0, $viewStart['month'], $viewStart['day'], $viewStart['year']);
     }
     // echo '<br/>VIEWSTART'; print_r($viewStart);
     // end of the period
     $cell = array();
     for ($ilign = 0, $icol = 0, $loop = $viewStart, $weekDay = $viewStart['weekDay'];;) {
         if ($loop['date'] >= $startNext['date'] && $icol == 0) {
             break;
         }
         $cell[$ilign][$icol] = $loop;
         $cell[$ilign][$icol]['focus'] = $loop['date'] < $start['date'] || $loop['date'] >= $startNext['date'] ? false : true;
         $cell[$ilign][$icol]['weekDay'] = $weekDay;
         $weekDay = ($weekDay + 1) % 7;
         if ($icol >= 6) {
             ++$ilign;
             $icol = 0;
         } else {
             ++$icol;
         }
         if ($loop['day'] >= $loop['daysInMonth']) {
             $loop['day'] = 1;
             if ($loop['month'] == 12) {
                 $loop['month'] = 1;
                 $loop['year'] += 1;
             } else {
                 $loop['month'] += 1;
             }
             $loop['daysInMonth'] = Date_Calc::daysInMonth($loop['month'], $loop['year']);
         } else {
             $loop['day'] = $loop['day'] + 1;
         }
         $loop['date'] = TikiLib::make_time(0, 0, 0, $loop['month'], $loop['day'], $loop['year']);
     }
     //echo '<pre>CELL'; print_r($cell); echo '</pre>';
     return $cell;
 }
开发者ID:linuxwhy,项目名称:tiki-1,代码行数:59,代码来源:calendarlib.php

示例9: postcalendar_userapi_buildView


//.........这里部分代码省略.........
    if (!isset($template_view)) {
        $template_view = 'default';
    }
    //=================================================================
    //  See if the template view exists
    //=================================================================
    if (!file_exists("modules/{$pcDir}/pntemplates/{$template_name}/views/{$viewtype}/{$template_view}.html")) {
        $template_view_load = 'default';
    } else {
        $template_view_load = pnVarPrepForOS($template_view);
    }
    //=================================================================
    //  Grab the current theme information
    //=================================================================
    pnThemeLoad(pnUserGetTheme());
    global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $bgcolor5, $bgcolor6, $textcolor1, $textcolor2;
    //=================================================================
    //  Insert necessary JavaScript into the page
    //=================================================================
    $output = pnModAPIFunc(__POSTCALENDAR__, 'user', 'pageSetup');
    //=================================================================
    //  Setup Smarty Template Engine
    //=================================================================
    $tpl = new pcSmarty();
    //if(!$tpl->is_cached("$template_name/views/$viewtype/$template_view_load.html",$cacheid)) {
    //diable caching completely
    if (true) {
        //=================================================================
        //  Let's just finish setting things up
        //=================================================================
        $the_year = substr($Date, 0, 4);
        $the_month = substr($Date, 4, 2);
        $the_day = substr($Date, 6, 2);
        $last_day = Date_Calc::daysInMonth($the_month, $the_year);
        //=================================================================
        //  populate the template object with information for
        //  Month Names, Long Day Names and Short Day Names
        //  as translated in the language files
        //  (may be adding more here soon - based on need)
        //=================================================================
        $pc_month_names = array(_CALJAN, _CALFEB, _CALMAR, _CALAPR, _CALMAY, _CALJUN, _CALJUL, _CALAUG, _CALSEP, _CALOCT, _CALNOV, _CALDEC);
        $pc_short_day_names = array(_CALSUNDAYSHORT, _CALMONDAYSHORT, _CALTUESDAYSHORT, _CALWEDNESDAYSHORT, _CALTHURSDAYSHORT, _CALFRIDAYSHORT, _CALSATURDAYSHORT);
        $pc_long_day_names = array(_CALSUNDAY, _CALMONDAY, _CALTUESDAY, _CALWEDNESDAY, _CALTHURSDAY, _CALFRIDAY, _CALSATURDAY);
        //=================================================================
        //  here we need to set up some information for later
        //  variable creation.  This helps us establish the correct
        //  date ranges for each view.  There may be a better way
        //  to handle all this, but my brain hurts, so your comments
        //  are very appreciated and welcomed.
        //=================================================================
        switch (_SETTING_FIRST_DAY_WEEK) {
            case _IS_MONDAY:
                $pc_array_pos = 1;
                $first_day = date('w', mktime(0, 0, 0, $the_month, 0, $the_year));
                $week_day = date('w', mktime(0, 0, 0, $the_month, $the_day - 1, $the_year));
                $end_dow = date('w', mktime(0, 0, 0, $the_month, $last_day, $the_year));
                if ($end_dow != 0) {
                    $the_last_day = $last_day + (7 - $end_dow);
                } else {
                    $the_last_day = $last_day;
                }
                break;
            case _IS_SATURDAY:
                $pc_array_pos = 6;
                $first_day = date('w', mktime(0, 0, 0, $the_month, 2, $the_year));
                $week_day = date('w', mktime(0, 0, 0, $the_month, $the_day + 1, $the_year));
开发者ID:bradymiller,项目名称:openemr,代码行数:67,代码来源:pnuserapi.php

示例10:

    if ($wd > 0 and $viewlist != 'list') {
        $viewstart_d = TikiLib::date_format("%d", $viewstart);
        $viewstart_m = TikiLib::date_format("%m", $viewstart);
        $viewstart_y = TikiLib::date_format("%Y", $viewstart);
        // Start in previous month if $wd is greater than the current day (relative to th current month)
        if ($viewstart_d <= $wd) {
            // $tikilib->make_time() used with timezones doesn't support month = 0
            if ($viewstart_m == 1) {
                $viewstart_m = 12;
                $viewstart_y--;
            } else {
                $viewstart_m--;
            }
            // $tikilib->make_time() used with timezones doesn't support day = 0
            // This supposes that $viewstart's day == 1, as defined above
            $viewstart_d = Date_Calc::daysInMonth($viewstart_m, $viewstart_y) - ($wd - $viewstart_d);
        } else {
            $viewstart_d -= $wd;
        }
        $viewstart = $tikilib->make_time(0, 0, 0, $viewstart_m, $viewstart_d, $viewstart_y);
    }
    $daystart = $viewstart;
    // then go to the end of the week for $viewend
    // $viewend = $viewstart + (7 * $d) - 1;
    $viewend = $tikilib->make_time(0, 0, 0, TikiLib::date_format("%m", $daystart), TikiLib::date_format("%d", $daystart) + 7, TikiLib::date_format("%Y", $daystart)) - 1;
    $dayend = $viewend;
    $numberofweeks = 0;
} else {
    $firstweek = $currentweek;
    $lastweek = $currentweek;
    //	$viewend = $viewstart + ($d - 1);
开发者ID:hurcane,项目名称:tiki-azure,代码行数:31,代码来源:tiki-calendar_setup.php

示例11: _getArticleCorrectedDatePeriod

 /**
  * @private
  * Caculate the correct article date period
  */
 function _getArticleCorrectedDatePeriod()
 {
     $blogSettings = $this->_blogInfo->getSettings();
     $serverTimeOffset = $blogSettings->getValue("time_offset");
     if ($serverTimeOffset == 0) {
         $this->_maxDate = -1;
     } else {
         if (strlen($this->_date) == 4) {
             $year = $this->_date;
             $this->_date = Timestamp::getDateWithOffset($year . "0101000000", -$serverTimeOffset);
             $this->_maxDate = Timestamp::getDateWithOffset($year . "1231235959", -$serverTimeOffset);
         } elseif (strlen($this->_date) == 6) {
             $year = substr($this->_date, 0, 4);
             $month = substr($this->_date, 4, 2);
             $dayOfMonth = Date_Calc::daysInMonth($month, $year);
             $this->_date = Timestamp::getDateWithOffset($year . $month . "01000000", -$serverTimeOffset);
             $this->_maxDate = Timestamp::getDateWithOffset($year . $month . $dayOfMonth . "235959", -$serverTimeOffset);
         } elseif (strlen($this->_date) == 8) {
             $year = substr($this->_date, 0, 4);
             $month = substr($this->_date, 4, 2);
             $day = substr($this->_date, 6, 2);
             $this->_date = Timestamp::getDateWithOffset($year . $month . $day . "000000", -$serverTimeOffset);
             $this->_maxDate = Timestamp::getDateWithOffset($year . $month . $day . "235959", -$serverTimeOffset);
         } else {
             $this->_maxDate = -1;
         }
     }
 }
开发者ID:BackupTheBerlios,项目名称:plogfr-svn,代码行数:32,代码来源:viewarticleaction.class.php

示例12: MakeRecurrences

 public function MakeRecurrences()
 {
     global $_EV_CONF;
     $days_on = $this->event->rec_data['listdays'];
     if (!is_array($days_on)) {
         return $this->events;
     }
     $occurrence = $this->dt_start;
     $num_intervals = count($days_on);
     $last_interval = $days_on[$num_intervals - 1];
     // Start by reducing the starting date by one day. Then the for
     // loop can handle all the events.
     list($y, $m, $d) = explode('-', $occurrence);
     //$occurrence = Date_Calc::prevDay($d, $m, $y);
     //$count = 1;
     $count = 0;
     while ($occurrence <= $this->event->rec_data['stop'] && $count < $_EV_CONF['max_repeats']) {
         $lastday = Date_Calc::daysInMonth($m, $y);
         // last day in month
         foreach ($days_on as $dom) {
             if ($dom == 32) {
                 $dom = $lastday;
             } elseif ($dom > $lastday) {
                 break;
             }
             $occurrence = sprintf("%d-%02d-%02d", $y, $m, $dom);
             // We might pick up some earlier instances, skip them
             if ($occurrence < $this->dt_start) {
                 continue;
             }
             // Stop when we hit the stop date
             if ($occurrence > $this->event->rec_data['stop']) {
                 break;
             }
             if ($this->skip > 0) {
                 $occurrence = $this->SkipWeekend($occurrence);
             }
             if ($occurrence != NULL) {
                 $this->storeEvent($occurrence);
                 $count++;
             }
             if ($count > $_EV_CONF['max_repeats']) {
                 break;
             }
             //list($y, $m, $d) = explode('-', $occurrence);
         }
         // foreach days_on
         // Increment the month
         $m += $this->event->rec_data['freq'];
         if ($m > 12) {
             // Roll over to next year
             $y += 1;
             $m = $m - 12;
         }
     }
     // while not at stop date
     return $this->events;
 }
开发者ID:matrox66,项目名称:evlist,代码行数:58,代码来源:evRecur.class.php

示例13: handle_month_recurrence

 /**
  * Specifically handle month recurrence
  *
  * This method will take care of parsing the month
  * recurrence data and correctly rescheduling a
  * scan if the recurrence time has been met
  *
  * @param array $parameters Array of the parameters
  *	from the database entry for this recurrence
  *	setting
  */
 private function handle_month_recurrence($parameters)
 {
     $the_interval = $parameters['the_interval'];
     $profile_id = $parameters['profile_id'];
     $date_scheduled = $parameters['date_scheduled'];
     $rules_string = $parameters['rules_string'];
     $specific_time = $this->specific_time($parameters['specific_time']);
     // The monthly rules string is colon delimited with a max of 3 items
     $tmp = explode(':', $rules_string);
     // The type of monthly recursion will be 'day' or 'gen'
     $type = $tmp[0];
     // This is either the day of the month, or a relative day of the week
     $day = $tmp[1];
     /**
      * Take the date the scan was scheduled, and only return the
      * year and month because my calculations are based off of the 0th
      * day of the month at midnight. Using 0th day because of how 
      * strtotime determines it's offset
      */
     $month_time = strtotime($date_scheduled);
     $month_time = strftime("%Y-%m-00 00:00:00", $month_time);
     /**
      * Get X months in the future from the last date scheduled
      * Because the remaining date calculations will be based
      * off of that future time.
      */
     $time = strtotime("+{$the_interval} month", strtotime($month_time));
     /**
      * Turn the future date into PEAR object so I can use
      * the PEAR object's methods.
      */
     $future_date = new Date($time);
     $future_month = $future_date->getMonth();
     $future_year = $future_date->getYear();
     switch ($type) {
         case "gen":
             // Get the weekday that was specified
             $weekday = $this->get_weekday_fullname($tmp[2]);
             // Get the number of days in the month
             $days_in_month = Date_Calc::daysInMonth($future_month, $future_year);
             /**
              * Turn the above into an array where the day of the
              * month is the value. The last value will be the last
              * day of the month
              */
             for ($day = 1; $day <= $days_in_month; $day++) {
                 $days[] = $day;
             }
             $days_in_month = $days;
             switch ($day) {
                 case "1st":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday);
                     $future_date->setDay($day);
                     break;
                 case "2nd":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 2);
                     $future_date->setDay($day);
                     break;
                 case "3rd":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 3);
                     $future_date->setDay($day);
                     break;
                 case "4th":
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 4);
                     $future_date->setDay($day);
                     break;
                 case "last":
                     $days_in_month = array_reverse($days_in_month);
                     /**
                      * I reversed the array above, so in essence we're
                      * starting from the end of the month, therefore the
                      * "last" day of the month will, in this case, be
                      * the first match
                      */
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday);
                     $future_date->setDay($day);
                     break;
                 case "2_last":
                     $days_in_month = array_reverse($days_in_month);
                     /**
                      * I reversed the array above, so in essence we're
                      * starting from the end of the month, therefore the
                      * "2nd to last" day of the month will, in this case, be
                      * the second match
                      */
                     $day = $this->get_relative_day($days_in_month, $future_month, $future_year, $weekday, 2);
                     $future_date->setDay($day);
                     break;
             }
//.........这里部分代码省略.........
开发者ID:TheProjecter,项目名称:nessquik,代码行数:101,代码来源:Cron.php

示例14: compare

compare(3, Date_Calc::dayOfWeek(22, 11, 2000), 'dayOfWeek');
compare(47, Date_Calc::weekOfYear(22, 11, 2000), 'weekOfYear');
compare(4, Date_Calc::quarterOfYear(22, 11, 2000), 'quarterOfYear');
compare(3, Date_Calc::dayOfWeek('22', '11', '2000'), 'dayOfWeek str');
compare(47, Date_Calc::weekOfYear('22', '11', '2000'), 'weekOfYear str');
compare(4, Date_Calc::quarterOfYear('22', '11', '2000'), 'quarterOfYear str');
compare(28, Date_Calc::daysInMonth(2, 1900), 'daysInMonth 1');
compare(29, Date_Calc::daysInMonth(2, 1996), 'daysInMonth 2');
compare(29, Date_Calc::daysInMonth(2, 2000), 'daysInMonth 3');
compare(28, Date_Calc::daysInMonth(2, 2001), 'daysInMonth 4');
compare(30, Date_Calc::daysInMonth(11, 2000), 'daysInMonth 5');
compare(28, Date_Calc::daysInMonth('02', 1900), 'daysInMonth 1 str');
compare(29, Date_Calc::daysInMonth('02', 1996), 'daysInMonth 2 str');
compare(29, Date_Calc::daysInMonth('02', 2000), 'daysInMonth 3 str');
compare(28, Date_Calc::daysInMonth('02', 2001), 'daysInMonth 4 str');
compare(30, Date_Calc::daysInMonth('11', '2000'), 'daysInMonth 5 str');
compare(5, Date_Calc::weeksInMonth(11, 2000), 'weeksInMonth');
compare(5, Date_Calc::weeksInMonth('11', '2000'), 'weeksInMonth str');
$exp = array('19000226', '19000227', '19000228', '19000301', '19000302', '19000303', '19000304');
compare($exp, Date_Calc::getCalendarWeek(27, 2, 1900), 'getCalendarWeek 1');
$exp = array('20000228', '20000229', '20000301', '20000302', '20000303', '20000304', '20000305');
compare($exp, Date_Calc::getCalendarWeek(28, 2, 2000), 'getCalendarWeek 2');
$exp = array('20001127', '20001128', '20001129', '20001130', '20001201', '20001202', '20001203');
compare($exp, Date_Calc::getCalendarWeek(27, 11, 2000), 'getCalendarWeek 3');
compare($exp, Date_Calc::getCalendarWeek('27', '11', '2000'), 'getCalendarWeek 3 str');
$exp = array(array('20001030', '20001031', '20001101', '20001102', '20001103', '20001104'), array('20001105', '20001106', '20001107', '20001108', '20001109', '20001110', '20001111'), array('20001112', '20001113', '20001114', '20001115', '20001116', '20001117', '20001118'), array('20001119', '20001121', '20001122', '20001123', '20001124', '20001125', '20001126'), array('20001127', '20001128', '20001129', '20001130', '20001201', '20001202', '20001203'));
compare($exp, Date_Calc::getCalendarMonth(11, 2000), 'getCalendarMonth');
compare($exp, Date_Calc::getCalendarMonth('11', '2000'), 'getCalendarMonth str');
// I don't feel like dealing with this right now...
//compare('', Date_Calc::getCalendarYear(2000), 'getCalendarYear');
compare('20001121', Date_Calc::prevDay(22, 11, 2000), 'prevDay');
开发者ID:MagnusA,项目名称:Date,代码行数:31,代码来源:calc.php

示例15: nWeekDayOfMonth

 /**
  * Calculates the date of the Nth weekday of the month,
  * such as the second Saturday of January 2000
  *
  * @param int    $week   the number of the week to get
  *                       (1 to 5.  Also can be 'last'.)
  * @param int    $dow    the day of the week (0 = Sunday)
  * @param int    $month  the month
  * @param int    $year   the year.  Use the complete year instead of the
  *                        abbreviated version.  E.g. use 2005, not 05.
  * @param string $format the string indicating how to format the output
  *
  * @return   string     the date in the desired format
  * @access   public
  * @static
  */
 function nWeekDayOfMonth($week, $dow, $month, $year, $format = DATE_CALC_FORMAT)
 {
     if (is_numeric($week) && ($week < 1 || $week > 5) || !is_numeric($week) && $week != "last") {
         return PEAR::raiseError("Invalid week value '{$week}', only 1-5 or 'last' accepted");
     }
     if ($dow < 0 || $dow > 6) {
         return PEAR::raiseError("Invalid dow value '{$dow}', only 0-6 accepted");
     }
     if ($month < 1 || $month > 12) {
         return PEAR::raiseError("Invalid month value '{$month}'");
     }
     if (is_numeric($week)) {
         // the weekday of first day of month "1"
         $DOW1 = Date_Calc::dayOfWeek(1, $month, $year);
         // finds the sunday
         $sunday = ($week - 1) * 7 + 1;
         if ($DOW1 > 0) {
             $sunday += 7 - $DOW1;
         }
         // adjust the sunday with dow addition
         $wdate = $sunday + $dow;
         if ($wdate > Date_Calc::daysInMonth($month, $year)) {
             return -1;
         } else {
             return Date_Calc::dateFormat($wdate, $month, $year, $format);
         }
     } elseif ($week == 'last' && $dow < 7) {
         $lastday = Date_Calc::daysInMonth($month, $year);
         $lastdow = Date_Calc::dayOfWeek($lastday, $month, $year);
         $diff = $dow - $lastdow;
         if ($diff > 0) {
             return Date_Calc::dateFormat($lastday - (7 - $diff), $month, $year, $format);
         } else {
             return Date_Calc::dateFormat($lastday + $diff, $month, $year, $format);
         }
     } else {
         return -1;
     }
 }
开发者ID:milk54,项目名称:geeklog-japan,代码行数:55,代码来源:Calc.php


注:本文中的Date_Calc::daysInMonth方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。