date.php

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

PHP
1,660
字号
                }
            }
            $notset = false;
        }

        return implode('', $output);
    }


    /**
     * Returns a string representation of the date which is equal with the timestamp
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString(null, $this->_Locale);
    }


    /**
     * Returns a integer representation of the object
     * But returns false when the given part is no value f.e. Month-Name
     *
     * @param  string|integer|Zend_Date  $part  OPTIONAL Defines the date or datepart to return as integer
     * @return integer|false
     */
    public function toValue($part = null)
    {
        $result = $this->get($part);
        if (is_numeric($result)) {
          return intval("$result");
        } else {
          return false;
        }
    }


    /**
     * Returns a representation of a date or datepart
     * This could be for example a localized monthname, the time without date,
     * the era or only the fractional seconds. There are about 50 different supported date parts.
     * For a complete list of supported datepart values look into the docu
     *
     * @param  string              $part    OPTIONAL Part of the date to return, if null the timestamp is returned
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return integer|string  date or datepart
     */
    public function get($part = null, $locale = null)
    {
        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if (Zend_Locale::isLocale($part)) {
            $locale = $part;
            $part = null;
        }

        if ($part === null) {
            $part = Zend_Date::TIMESTAMP;
        }

        if (!defined("self::".$part)) {
            return $this->toString($part, $locale);
        }

        switch($part) {

            // day formats
            case Zend_Date::DAY :
                return $this->date('d', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::WEEKDAY_SHORT :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'wide', $weekday));
                return substr($day[$weekday], 0, 3);
                break;

            case Zend_Date::DAY_SHORT :
                return $this->date('j', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::WEEKDAY :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'wide', $weekday));
                return $day[$weekday];
                break;

            case Zend_Date::WEEKDAY_8601 :
                return $this->date('N', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::DAY_SUFFIX :
                return $this->date('S', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::WEEKDAY_DIGIT :
                return $this->date('w', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::DAY_OF_YEAR :
                return $this->date('z', $this->getUnixTimestamp(), false);
                break;


            case Zend_Date::WEEKDAY_NARROW :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'abbreviated', $weekday));
                return substr($day[$weekday], 0, 1);
                break;

            case Zend_Date::WEEKDAY_NAME :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'abbreviated', $weekday));
                return $day[$weekday];
                break;


            // week formats
            case Zend_Date::WEEK :
                return $this->date('W', $this->getUnixTimestamp(), false);
                break;


            // month formats
            case Zend_Date::MONTH_NAME :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                $mon = Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'wide', $month));
                return $mon[$month];
                break;

            case Zend_Date::MONTH :
                return $this->date('m', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::MONTH_NAME_SHORT :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                $mon = Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'abbreviated', $month));
                return $mon[$month];
                break;

            case Zend_Date::MONTH_SHORT :
                return $this->date('n', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::MONTH_DAYS :
                return $this->date('t', $this->getUnixTimestamp(), false);
                break;


            case Zend_Date::MONTH_NAME_NARROW :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                $mon = Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'abbreviated', $month));
                return substr($mon[$month], 0, 1);
                break;


            // year formats
            case Zend_Date::LEAPYEAR :
                return $this->date('L', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::YEAR_8601 :
                return $this->date('o', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::YEAR :
                return $this->date('Y', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::YEAR_SHORT :
                return $this->date('y', $this->getUnixTimestamp(), false);
                break;


            case Zend_Date::YEAR_SHORT_8601 :
                $year = $this->date('o', $this->getUnixTimestamp(), false);
                return substr($year, -2);
                break;


            // time formats
            case Zend_Date::MERIDIEM :
                $am = $this->date('a', $this->getUnixTimestamp(), false);
                $amlocal = Zend_Locale_Data::getContent($locale, 'daytime', 'gregorian');
                return $amlocal[$am];
                break;

            case Zend_Date::SWATCH :
                return $this->date('B', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::HOUR_SHORT_AM :
                return $this->date('g', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::HOUR_SHORT :
                return $this->date('G', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::HOUR_AM :
                return $this->date('h', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::HOUR :
                return $this->date('H', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::MINUTE :
                return $this->date('i', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::SECOND :
                return $this->date('s', $this->getUnixTimestamp(), false);
                break;


            case Zend_Date::MINUTE_SHORT :
                return $this->date('i', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::SECOND_SHORT :
                return $this->date('s', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::MILLISECOND :
                return $this->_Fractional;
                break;


            // timezone formats
            case Zend_Date::TIMEZONE_NAME :
                return $this->date('e', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::DAYLIGHT :
                return $this->date('I', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::GMT_DIFF :
                return $this->date('O', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::GMT_DIFF_SEP :
                return $this->date('P', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::TIMEZONE :
                return $this->date('T', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::TIMEZONE_SECS :
                return $this->date('Z', $this->getUnixTimestamp(), false);
                break;


            // date strings
            case Zend_Date::ISO_8601 :
                return $this->date('c', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::RFC_2822 :
                return $this->date('r', $this->getUnixTimestamp(), false);
                break;

            case Zend_Date::TIMESTAMP :
                return $this->getUnixTimestamp();
                break;


            // additional formats
            case Zend_Date::ERA :
                $year = $this->date('Y', $this->getUnixTimestamp(), false);
                if ($year < 0) {
                    $era = Zend_Locale_Data::getContent($locale, 'erashort', array('gregorian', '0'));
                    return $era['0'];
                }
                $era = Zend_Locale_Data::getContent($locale, 'erashort', array('gregorian', '1'));
                return $era['1'];
                break;

            case Zend_Date::ERA_NAME :
                $year = $this->date('Y', $this->getUnixTimestamp(), false);
                if ($year < 0) {
                    $era = Zend_Locale_Data::getContent($locale, 'era', array('gregorian', '0'));
                    return $era['0'];
                }
                $era = Zend_Locale_Data::getContent($locale, 'era', array('gregorian', '1'));
                if (!isset($era['1'])) {
                    return false;
                }
                return $era['1'];
                break;

            case Zend_Date::DATES :
                return $this->toString(Zend_Locale_Format::getDateFormat($locale), 'iso', $locale);
                break;

            case Zend_Date::DATE_FULL :
                $date = Zend_Locale_Data::getContent($locale, 'dateformat', array('gregorian', 'full'));
                return $this->toString($date['pattern'], 'iso', $locale);
                break;

            case Zend_Date::DATE_LONG :
                $date = Zend_Locale_Data::getContent($locale, 'dateformat', array('gregorian', 'long'));
                return $this->toString($date['pattern'], 'iso', $locale);
                break;

            case Zend_Date::DATE_MEDIUM :
                $date = Zend_Locale_Data::getContent($locale, 'dateformat', array('gregorian', 'medium'));
                return $this->toString($date['pattern'], 'iso', $locale);
                break;

            case Zend_Date::DATE_SHORT :
                $date = Zend_Locale_Data::getContent($locale, 'dateformat', array('gregorian', 'short'));
                return $this->toString($date['pattern'], 'iso', $locale);
                break;

            case Zend_Date::TIMES :
                return $this->toString(Zend_Locale_Format::getTimeFormat($locale), 'iso', $locale);
                break;

            case Zend_Date::TIME_FULL :
                $time = Zend_Locale_Data::getContent($locale, 'timeformat', array('gregorian', 'full'));
                return $this->toString($time['pattern'], 'iso', $locale);
                break;

            case Zend_Date::TIME_LONG :
                $time = Zend_Locale_Data::getContent($locale, 'timeformat', array('gregorian', 'long'));
                return $this->toString($time['pattern'], 'iso', $locale);

⌨️ 快捷键说明

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