⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timezone.php

📁 一个基于web的开源项目管理工具
💻 PHP
📖 第 1 页 / 共 5 页
字号:
<?php//// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license,      |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Authors: Baba Buehler <baba@babaz.com>                               |// |                                                                      |// +----------------------------------------------------------------------+//// PEAR CVS Id: TimeZone.php,v 1.3 2003/01/04 11:54:54 mj Exp//// Date_TimeZone Class///*** TimeZone representation class, along with time zone information data.** TimeZone representation class, along with time zone information data.* The default timezone is set from the first valid timezone id found* in one of the following places, in this order: <br>* 1) global $_DATE_TIMEZONE_DEFAULT<br>* 2) system environment variable PHP_TZ<br>* 3) system environment variable TZ<br>* 4) the result of date('T')<br>* If no valid timezone id is found, the default timezone is set to 'UTC'.* You may also manually set the default timezone by passing a valid id to* Date_TimeZone::setDefault().<br>** This class includes time zone data (from zoneinfo) in the form of a global array, $_DATE_TIMEZONE_DATA.*** @author Baba Buehler <baba@babaz.com>* @package Date* @access public* @version 1.0*/class Date_TimeZone{    /**     * Time Zone ID of this time zone     * @var string     */    var $id;    /**     * Long Name of this time zone (ie Central Standard Time)     * @var string     */    var $longname;    /**     * Short Name of this time zone (ie CST)     * @var string     */    var $shortname;    /**     * true if this time zone observes daylight savings time     * @var boolean     */    var $hasdst;    /**     * DST Long Name of this time zone     * @var string     */    var $dstlongname;    /**     * DST Short Name of this timezone     * @var string     */    var $dstshortname;    /**     * offset, in milliseconds, of this timezone     * @var int     */    var $offset;    /**     * System Default Time Zone     * @var object Date_TimeZone     */    var $default;    /**     * Constructor     *     * Creates a new Date::TimeZone object, representing the time zone     * specified in $id.  If the supplied ID is invalid, the created     * time zone is UTC.     *     * @access public     * @param string $id the time zone id     * @return object Date_TimeZone the new Date_TimeZone object     */    function Date_TimeZone($id)    {        global $_DATE_TIMEZONE_DATA;        if(Date_TimeZone::isValidID($id)) {            $this->id = $id;            $this->longname = $_DATE_TIMEZONE_DATA[$id]['longname'];            $this->shortname = $_DATE_TIMEZONE_DATA[$id]['shortname'];            $this->offset = $_DATE_TIMEZONE_DATA[$id]['offset'];            if($_DATE_TIMEZONE_DATA[$id]['hasdst']) {                $this->hasdst = true;                $this->dstlongname = $_DATE_TIMEZONE_DATA[$id]['dstlongname'];                $this->dstshortname = $_DATE_TIMEZONE_DATA[$id]['dstshortname'];            } else {                $this->hasdst = false;                $this->dstlongname = $this->longname;                $this->dstshortname = $this->shortname;            }        } else {            $this->id = 'UTC';            $this->longname = $_DATE_TIMEZONE_DATA[$this->id]['longname'];            $this->shortname = $_DATE_TIMEZONE_DATA[$this->id]['shortname'];            $this->hasdst = $_DATE_TIMEZONE_DATA[$this->id]['hasdst'];            $this->offset = $_DATE_TIMEZONE_DATA[$this->id]['offset'];        }    }    /**     * Return a TimeZone object representing the system default time zone     *     * Return a TimeZone object representing the system default time zone,     * which is initialized during the loading of TimeZone.php.     *     * @access public     * @return object Date_TimeZone the default time zone     */    function getDefault()    {        global $default;        return new Date_TimeZone($default);    }    /**     * Sets the system default time zone to the time zone in $id     *     * Sets the system default time zone to the time zone in $id     *     * @access public     * @param string $id the time zone id to use     */    function setDefault($id)    {        global $default;        if(Date_TimeZone::isValidID($id)) {            $default = $id;        }    }    /**     * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data     *     * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data     *     * @access public     * @param string $id the id to test     * @return boolean true if the supplied ID is valid     */    function isValidID($id)    {        global $_DATE_TIMEZONE_DATA;        if(isset($_DATE_TIMEZONE_DATA[$id])) {            return true;        } else {            return false;        }    }    /**     * Is this time zone equal to another     *     * Tests to see if this time zone is equal (ids match)     * to a given Date_TimeZone object.     *     * @access public     * @param object Date_TimeZone $tz the timezone to test     * @return boolean true if this time zone is equal to the supplied time zone     */    function isEqual($tz)    {        if(strcasecmp($this->id, $tz->id) == 0) {            return true;        } else {            return false;        }    }    /**     * Is this time zone equivalent to another     *     * Tests to see if this time zone is equivalent to     * a given time zone object.  Equivalence in this context     * is defined by the two time zones having an equal raw     * offset and an equal setting of "hasdst".  This is not true     * equivalence, as the two time zones may have different rules     * for the observance of DST, but this implementation does not     * know DST rules.     *     * @access public     * @param object Date_TimeZone $tz the timezone object to test     * @return boolean true if this time zone is equivalent to the supplied time zone     */    function isEquivalent($tz)    {        if($this->offset == $tz->offset && $this->hasdst == $tz->hasdst) {            return true;        } else {            return false;        }    }    /**     * Returns true if this zone observes daylight savings time     *     * Returns true if this zone observes daylight savings time     *     * @access public     * @return boolean true if this time zone has DST     */    function hasDaylightTime()    {        return $this->hasdst;    }    /**     * Is the given date/time in DST for this time zone     *     * Attempts to determine if a given Date object represents a date/time     * that is in DST for this time zone.  WARNINGS: this basically attempts to     * "trick" the system into telling us if we're in DST for a given time zone.     * This uses putenv() which may not work in safe mode, and relies on unix time     * which is only valid for dates from 1970 to ~2038.  This relies on the     * underlying OS calls, so it may not work on Windows or on a system where     * zoneinfo is not installed or configured properly.     *     * @access public     * @param object Date $date the date/time to test     * @return boolean true if this date is in DST for this time zone     */    function inDaylightTime($date)    {	return date('I', $date->getDate(DATE_FORMAT_UNIXTIME));    }    /**     * Get the DST offset for this time zone     *     * Returns the DST offset of this time zone, in milliseconds,     * if the zone observes DST, zero otherwise.  Currently the     * DST offset is hard-coded to one hour.     *     * @access public     * @return int the DST offset, in milliseconds or zero if the zone does not observe DST     */    function getDSTSavings()    {        if($this->hasdst) {            return 3600000;        } else {            return 0;        }    }    /**     * Get the DST-corrected offset to UTC for the given date     *     * Attempts to get the offset to UTC for a given date/time, taking into     * account daylight savings time, if the time zone observes it and if     * it is in effect.  Please see the WARNINGS on Date::TimeZone::inDaylightTime().     *     *     * @access public     * @param object Date $date the Date to test     * @return int the corrected offset to UTC in milliseconds     */    function getOffset($date)    {        if($this->inDaylightTime($date)) {            return $this->offset + $this->getDSTSavings();        } else {            return $this->offset;        }    }    /**     * Returns the list of valid time zone id strings     *     * Returns the list of valid time zone id strings     *     * @access public     * @return mixed an array of strings with the valid time zone IDs     */    function getAvailableIDs()    {        global $_DATE_TIMEZONE_DATA;        return array_keys($_DATE_TIMEZONE_DATA);    }    /**     * Returns the id for this time zone     *     * Returns the time zone id  for this time zone, i.e. "America/Chicago"     *     * @access public     * @return string the id     */    function getID()    {        return $this->id;    }    /**     * Returns the long name for this time zone     *     * Returns the long name for this time zone,     * i.e. "Central Standard Time"     *     * @access public     * @return string the long name     */    function getLongName()    {        return $this->longname;    }    /**     * Returns the short name for this time zone     *     * Returns the short name for this time zone, i.e. "CST"     *     * @access public     * @return string the short name     */    function getShortName()    {        return $this->shortname;    }    /**     * Returns the DST long name for this time zone     *     * Returns the DST long name for this time zone, i.e. "Central Daylight Time"     *     * @access public     * @return string the daylight savings time long name     */    function getDSTLongName()    {        return $this->dstlongname;    }    /**     * Returns the DST short name for this time zone     *     * Returns the DST short name for this time zone, i.e. "CDT"     *     * @access public     * @return string the daylight savings time short name     */    function getDSTShortName()    {        return $this->dstshortname;    }    /**     * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone     *     * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone     *     * @access public     * @return int the offset, in milliseconds     */    function getRawOffset()    {        return $this->offset;    }} // Date_TimeZone//// Time Zone Data//  offset is in miliseconds//

⌨️ 快捷键说明

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