date.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 1,690 行 · 第 1/5 页

SVN-BASE
1,690
字号
     * r - RFC2822 format, U - unix timestamp     *     * Not supported ISO tokens are     * u - extended year, Q - quarter, q - quarter, L - stand alone month, W - week of month     * F - day of week of month, g - modified julian, c - stand alone weekday, k - hour 0-11, K - hour 1-24     * v - wall zone     *     * @param  string              $format  OPTIONAL Rule for formatting output. If null the default date format is used     * @param  string              $type    OPTIONAL Type for the format string which overrides the standard setting     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input     * @return string     */    public function toString($format = null, $type = null, $locale = null)    {        if (Zend_Locale::isLocale($format)) {            $locale = $format;            $format = null;        }        if (Zend_Locale::isLocale($type)) {            $locale = $type;            $type = null;        }        if ($locale === null) {            $locale = $this->getLocale();        }        if ($format === null) {            $format = Zend_Locale_Format::getDateFormat($locale) . ' ' . Zend_Locale_Format::getTimeFormat($locale);        } else if (((self::$_Options['format_type'] == 'php') && ($type === null)) or ($type == 'php')) {            $format = Zend_Locale_Format::convertPhpToIsoFormat($format);        }        // get format tokens        $j = 0;        $comment = false;        $output = array();        for($i = 0; $i < strlen($format); ++$i) {            if ($format[$i] == "'") {                if ($comment == false) {                    $comment = true;                    ++$j;                    $output[$j] = "'";                } else if (isset($format[$i+1]) and ($format[$i+1] == "'")) {                    $output[$j] .= "'";                    ++$i;                } else {                    $comment = false;                }                continue;            }            if (isset($output[$j]) and ($output[$j][0] == $format[$i]) or                ($comment == true)) {                $output[$j] .= $format[$i];            } else {                ++$j;                $output[$j] = $format[$i];            }        }        $notset = false;        // fill format tokens with date information        for($i = 1; $i <= count($output); ++$i) {            // fill fixed tokens            switch ($output[$i]) {                // special formats                case 'SS' :                    $output[$i] = $this->date('S', $this->getUnixTimestamp(), false);                    break;                case 'eee' :                    $output[$i] = $this->date('N', $this->getUnixTimestamp(), false);                    break;                case 'ddd' :                    $output[$i] = $this->date('t', $this->getUnixTimestamp(), false);                    break;                case 'l' :                    $output[$i] = $this->date('L', $this->getUnixTimestamp(), false);                    break;                case 'B' :                    $output[$i] = $this->date('B', $this->getUnixTimestamp(), false);                    break;                case 'I' :                    $output[$i] = $this->date('I', $this->getUnixTimestamp(), false);                    break;                case 'X' :                    $output[$i] = $this->date('Z', $this->getUnixTimestamp(), false);                    break;                case 'r' :                    $output[$i] = $this->date('r', $this->getUnixTimestamp(), false);                    break;                case 'U' :                    $output[$i] = $this->getUnixTimestamp();                    break;                    // eras                case 'GGGGG' :                    $output[$i] = substr($this->get(Zend_Date::ERA, $locale), 0, 1) . ".";                    break;                case 'GGGG' :                    $output[$i] = $this->get(Zend_Date::ERA_NAME, $locale);                    break;                case 'GGG' :                case 'GG'  :                case 'G'   :                    $output[$i] = $this->get(Zend_Date::ERA, $locale);                    break;                // years                case 'yy' :                    $output[$i] = $this->get(Zend_Date::YEAR_SHORT, $locale);                    break;                // ISO years                case 'YY' :                    $output[$i] = $this->get(Zend_Date::YEAR_SHORT_8601, $locale);                    break;                // months                case 'MMMMM' :                    $output[$i] = substr($this->get(Zend_Date::MONTH_NAME_NARROW, $locale), 0, 1);                    break;                case 'MMMM' :                    $output[$i] = $this->get(Zend_Date::MONTH_NAME, $locale);                    break;                case 'MMM' :                    $output[$i] = $this->get(Zend_Date::MONTH_NAME_SHORT, $locale);                    break;                case 'MM' :                    $output[$i] = $this->get(Zend_Date::MONTH, $locale);                    break;                case 'M' :                    $output[$i] = $this->get(Zend_Date::MONTH_SHORT, $locale);                    break;                // week                case 'ww' :                    $output[$i] = str_pad($this->get(Zend_Date::WEEK, $locale), 2, '0', STR_PAD_LEFT);                    break;                case 'w' :                    $output[$i] = $this->get(Zend_Date::WEEK, $locale);                    break;                // monthday                case 'dd' :                    $output[$i] = $this->get(Zend_Date::DAY, $locale);                    break;                case 'd' :                    $output[$i] = $this->get(Zend_Date::DAY_SHORT, $locale);                    break;                // yearday                case 'DDD' :                    $output[$i] = str_pad($this->get(Zend_Date::DAY_OF_YEAR, $locale), 3, '0', STR_PAD_LEFT);                    break;                case 'DD' :                    $output[$i] = str_pad($this->get(Zend_Date::DAY_OF_YEAR, $locale), 2, '0', STR_PAD_LEFT);                    break;                case 'D' :                    $output[$i] = $this->get(Zend_Date::DAY_OF_YEAR, $locale);                    break;                // weekday                case 'EEEEE' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY_NARROW, $locale);                    break;                case 'EEEE' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY, $locale);                    break;                case 'EEE' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY_SHORT, $locale);                    break;                case 'EE' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY_NAME, $locale);                    break;                case 'E' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY_NARROW, $locale);                    break;                // weekday number                case 'ee' :                    $output[$i] = str_pad($this->get(Zend_Date::WEEKDAY_8601, $locale), 2, '0', STR_PAD_LEFT);                    break;                case 'e' :                    $output[$i] = $this->get(Zend_Date::WEEKDAY_8601, $locale);                    break;                // period                case 'a' :                    $output[$i] = $this->get(Zend_Date::MERIDIEM, $locale);                    break;                // hour                case 'hh' :                    $output[$i] = $this->get(Zend_Date::HOUR_AM, $locale);                    break;                case 'h' :                    $output[$i] = $this->get(Zend_Date::HOUR_SHORT_AM, $locale);                    break;                case 'HH' :                    $output[$i] = $this->get(Zend_Date::HOUR, $locale);                    break;                case 'H' :                    $output[$i] = $this->get(Zend_Date::HOUR_SHORT, $locale);                    break;                // minute                case 'mm' :                    $output[$i] = $this->get(Zend_Date::MINUTE, $locale);                    break;                case 'm' :                    $output[$i] = $this->get(Zend_Date::MINUTE_SHORT, $locale);                    break;                // second                case 'ss' :                    $output[$i] = $this->get(Zend_Date::SECOND, $locale);                    break;                case 's' :                    $output[$i] = $this->get(Zend_Date::SECOND_SHORT, $locale);                    break;                case 'S' :                    $output[$i] = $this->get(Zend_Date::MILLISECOND, $locale);                    break;                // zone                case 'zzzz' :                    $output[$i] = $this->get(Zend_Date::TIMEZONE_NAME, $locale);                    break;                case 'zzz' :                case 'zz'  :                case 'z'   :                    $output[$i] = $this->get(Zend_Date::TIMEZONE, $locale);                    break;                // zone offset                case 'ZZZZ' :                    $output[$i] = $this->get(Zend_Date::GMT_DIFF_SEP, $locale);                    break;                case 'ZZZ' :                case 'ZZ'  :                case 'Z'   :                    $output[$i] = $this->get(Zend_Date::GMT_DIFF, $locale);                    break;                default :                    $notset = true;                    break;            }            // fill variable tokens            if ($notset == true) {                if (($output[$i][0] !== "'") and (preg_match('/y+/', $output[$i]))) {                    $length     = strlen($output[$i]);                    $output[$i] = $this->get(Zend_Date::YEAR, $locale);                    $output[$i] = str_pad($output[$i], $length, '0', STR_PAD_LEFT);                }                if (($output[$i][0] !== "'") and (preg_match('/Y+/', $output[$i]))) {                    $length     = strlen($output[$i]);                    $output[$i] = $this->get(Zend_Date::YEAR_8601, $locale);                    $output[$i] = str_pad($output[$i], $length, '0', STR_PAD_LEFT);                }                if (($output[$i][0] !== "'") and (preg_match('/A+/', $output[$i]))) {                    $length     = strlen($output[$i]);                    $seconds    = $this->get(Zend_Date::TIMESTAMP,   $locale);                    $month      = $this->get(Zend_Date::MONTH_SHORT, $locale);                    $day        = $this->get(Zend_Date::DAY_SHORT,   $locale);                    $year       = $this->get(Zend_Date::YEAR,        $locale);                    $seconds   -= $this->mktime(0, 0, 0, $month, $day, $year, false);                    $output[$i] = str_pad($seconds, $length, '0', STR_PAD_LEFT);                }                if ($output[$i][0] === "'") {                    $output[$i] = substr($output[$i], 1);                }            }            $notset = false;        }        return implode('', $output);    }    /**     * Returns a string representation of the date which is equal with the timestamp     *

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?