home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / lib / PEAR / Date / TimeZone.php < prev   
PHP Script  |  2003-05-08  |  127KB  |  3,644 lines

  1. <?php
  2. //
  3. // +----------------------------------------------------------------------+
  4. // | PHP Version 4                                                        |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2003 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.02 of the PHP license,      |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Baba Buehler <baba@babaz.com>                               |
  17. // |                                                                      |
  18. // +----------------------------------------------------------------------+
  19. //
  20. // PEAR CVS Id: TimeZone.php,v 1.3 2003/01/04 11:54:54 mj Exp
  21. //
  22. // Date_TimeZone Class
  23. //
  24.  
  25. /**
  26. * TimeZone representation class, along with time zone information data.
  27. *
  28. * TimeZone representation class, along with time zone information data.
  29. * The default timezone is set from the first valid timezone id found
  30. * in one of the following places, in this order: <br>
  31. * 1) global $_DATE_TIMEZONE_DEFAULT<br>
  32. * 2) system environment variable PHP_TZ<br>
  33. * 3) system environment variable TZ<br>
  34. * 4) the result of date('T')<br>
  35. * If no valid timezone id is found, the default timezone is set to 'UTC'.
  36. * You may also manually set the default timezone by passing a valid id to
  37. * Date_TimeZone::setDefault().<br>
  38. *
  39. * This class includes time zone data (from zoneinfo) in the form of a global array, $_DATE_TIMEZONE_DATA.
  40. *
  41. *
  42. * @author Baba Buehler <baba@babaz.com>
  43. * @package Date
  44. * @access public
  45. * @version 1.0
  46. */
  47. class Date_TimeZone
  48. {
  49.     /**
  50.      * Time Zone ID of this time zone
  51.      * @var string
  52.      */
  53.     var $id;
  54.     /**
  55.      * Long Name of this time zone (ie Central Standard Time)
  56.      * @var string
  57.      */
  58.     var $longname;
  59.     /**
  60.      * Short Name of this time zone (ie CST)
  61.      * @var string
  62.      */
  63.     var $shortname;
  64.     /**
  65.      * true if this time zone observes daylight savings time
  66.      * @var boolean
  67.      */
  68.     var $hasdst;
  69.     /**
  70.      * DST Long Name of this time zone
  71.      * @var string
  72.      */
  73.     var $dstlongname;
  74.     /**
  75.      * DST Short Name of this timezone
  76.      * @var string
  77.      */
  78.     var $dstshortname;
  79.     /**
  80.      * offset, in milliseconds, of this timezone
  81.      * @var int
  82.      */
  83.     var $offset;
  84.  
  85.     /**
  86.      * System Default Time Zone
  87.      * @var object Date_TimeZone
  88.      */
  89.     var $default;
  90.  
  91.  
  92.     /**
  93.      * Constructor
  94.      *
  95.      * Creates a new Date::TimeZone object, representing the time zone
  96.      * specified in $id.  If the supplied ID is invalid, the created
  97.      * time zone is UTC.
  98.      *
  99.      * @access public
  100.      * @param string $id the time zone id
  101.      * @return object Date_TimeZone the new Date_TimeZone object
  102.      */
  103.     function Date_TimeZone($id)
  104.     {
  105.         global $_DATE_TIMEZONE_DATA;
  106.         if(Date_TimeZone::isValidID($id)) {
  107.             $this->id = $id;
  108.             $this->longname = $_DATE_TIMEZONE_DATA[$id]['longname'];
  109.             $this->shortname = $_DATE_TIMEZONE_DATA[$id]['shortname'];
  110.             $this->offset = $_DATE_TIMEZONE_DATA[$id]['offset'];
  111.             if($_DATE_TIMEZONE_DATA[$id]['hasdst']) {
  112.                 $this->hasdst = true;
  113.                 $this->dstlongname = $_DATE_TIMEZONE_DATA[$id]['dstlongname'];
  114.                 $this->dstshortname = $_DATE_TIMEZONE_DATA[$id]['dstshortname'];
  115.             } else {
  116.                 $this->hasdst = false;
  117.                 $this->dstlongname = $this->longname;
  118.                 $this->dstshortname = $this->shortname;
  119.             }
  120.         } else {
  121.             $this->id = 'UTC';
  122.             $this->longname = $_DATE_TIMEZONE_DATA[$this->id]['longname'];
  123.             $this->shortname = $_DATE_TIMEZONE_DATA[$this->id]['shortname'];
  124.             $this->hasdst = $_DATE_TIMEZONE_DATA[$this->id]['hasdst'];
  125.             $this->offset = $_DATE_TIMEZONE_DATA[$this->id]['offset'];
  126.         }
  127.     }
  128.  
  129.     /**
  130.      * Return a TimeZone object representing the system default time zone
  131.      *
  132.      * Return a TimeZone object representing the system default time zone,
  133.      * which is initialized during the loading of TimeZone.php.
  134.      *
  135.      * @access public
  136.      * @return object Date_TimeZone the default time zone
  137.      */
  138.     function getDefault()
  139.     {
  140.         global $default;
  141.         return new Date_TimeZone($default);
  142.     }
  143.  
  144.     /**
  145.      * Sets the system default time zone to the time zone in $id
  146.      *
  147.      * Sets the system default time zone to the time zone in $id
  148.      *
  149.      * @access public
  150.      * @param string $id the time zone id to use
  151.      */
  152.     function setDefault($id)
  153.     {
  154.         global $default;
  155.         if(Date_TimeZone::isValidID($id)) {
  156.             $default = $id;
  157.         }
  158.     }
  159.  
  160.     /**
  161.      * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data
  162.      *
  163.      * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data
  164.      *
  165.      * @access public
  166.      * @param string $id the id to test
  167.      * @return boolean true if the supplied ID is valid
  168.      */
  169.     function isValidID($id)
  170.     {
  171.         global $_DATE_TIMEZONE_DATA;
  172.         if(isset($_DATE_TIMEZONE_DATA[$id])) {
  173.             return true;
  174.         } else {
  175.             return false;
  176.         }
  177.     }
  178.  
  179.     /**
  180.      * Is this time zone equal to another
  181.      *
  182.      * Tests to see if this time zone is equal (ids match)
  183.      * to a given Date_TimeZone object.
  184.      *
  185.      * @access public
  186.      * @param object Date_TimeZone $tz the timezone to test
  187.      * @return boolean true if this time zone is equal to the supplied time zone
  188.      */
  189.     function isEqual($tz)
  190.     {
  191.         if(strcasecmp($this->id, $tz->id) == 0) {
  192.             return true;
  193.         } else {
  194.             return false;
  195.         }
  196.     }
  197.  
  198.     /**
  199.      * Is this time zone equivalent to another
  200.      *
  201.      * Tests to see if this time zone is equivalent to
  202.      * a given time zone object.  Equivalence in this context
  203.      * is defined by the two time zones having an equal raw
  204.      * offset and an equal setting of "hasdst".  This is not true
  205.      * equivalence, as the two time zones may have different rules
  206.      * for the observance of DST, but this implementation does not
  207.      * know DST rules.
  208.      *
  209.      * @access public
  210.      * @param object Date_TimeZone $tz the timezone object to test
  211.      * @return boolean true if this time zone is equivalent to the supplied time zone
  212.      */
  213.     function isEquivalent($tz)
  214.     {
  215.         if($this->offset == $tz->offset && $this->hasdst == $tz->hasdst) {
  216.             return true;
  217.         } else {
  218.             return false;
  219.         }
  220.     }
  221.  
  222.     /**
  223.      * Returns true if this zone observes daylight savings time
  224.      *
  225.      * Returns true if this zone observes daylight savings time
  226.      *
  227.      * @access public
  228.      * @return boolean true if this time zone has DST
  229.      */
  230.     function hasDaylightTime()
  231.     {
  232.         return $this->hasdst;
  233.     }
  234.  
  235.     /**
  236.      * Is the given date/time in DST for this time zone
  237.      *
  238.      * Attempts to determine if a given Date object represents a date/time
  239.      * that is in DST for this time zone.  WARNINGS: this basically attempts to
  240.      * "trick" the system into telling us if we're in DST for a given time zone.
  241.      * This uses putenv() which may not work in safe mode, and relies on unix time
  242.      * which is only valid for dates from 1970 to ~2038.  This relies on the
  243.      * underlying OS calls, so it may not work on Windows or on a system where
  244.      * zoneinfo is not installed or configured properly.
  245.      *
  246.      * @access public
  247.      * @param object Date $date the date/time to test
  248.      * @return boolean true if this date is in DST for this time zone
  249.      */
  250.     function inDaylightTime($date)
  251.     {
  252.         $env_tz = "";
  253.         if(getenv("TZ")) {
  254.             $env_tz = getenv("TZ");
  255.         }
  256.         putenv("TZ=".$this->id);
  257.         $ltime = localtime($date->getTime(), true);
  258.         putenv("TZ=".$env_tz);
  259.         return $ltime['tm_isdst'];
  260.     }
  261.  
  262.     /**
  263.      * Get the DST offset for this time zone
  264.      *
  265.      * Returns the DST offset of this time zone, in milliseconds,
  266.      * if the zone observes DST, zero otherwise.  Currently the
  267.      * DST offset is hard-coded to one hour.
  268.      *
  269.      * @access public
  270.      * @return int the DST offset, in milliseconds or zero if the zone does not observe DST
  271.      */
  272.     function getDSTSavings()
  273.     {
  274.         if($this->hasdst) {
  275.             return 3600000;
  276.         } else {
  277.             return 0;
  278.         }
  279.     }
  280.  
  281.     /**
  282.      * Get the DST-corrected offset to UTC for the given date
  283.      *
  284.      * Attempts to get the offset to UTC for a given date/time, taking into
  285.      * account daylight savings time, if the time zone observes it and if
  286.      * it is in effect.  Please see the WARNINGS on Date::TimeZone::inDaylightTime().
  287.      *
  288.      *
  289.      * @access public
  290.      * @param object Date $date the Date to test
  291.      * @return int the corrected offset to UTC in milliseconds
  292.      */
  293.     function getOffset($date)
  294.     {
  295.         if($this->inDaylightTime($date)) {
  296.             return $this->offset + $this->getDSTSavings();
  297.         } else {
  298.             return $this->offset;
  299.         }
  300.     }
  301.  
  302.     /**
  303.      * Returns the list of valid time zone id strings
  304.      *
  305.      * Returns the list of valid time zone id strings
  306.      *
  307.      * @access public
  308.      * @return mixed an array of strings with the valid time zone IDs
  309.      */
  310.     function getAvailableIDs()
  311.     {
  312.         global $_DATE_TIMEZONE_DATA;
  313.         return array_keys($_DATE_TIMEZONE_DATA);
  314.     }
  315.  
  316.     /**
  317.      * Returns the id for this time zone
  318.      *
  319.      * Returns the time zone id  for this time zone, i.e. "America/Chicago"
  320.      *
  321.      * @access public
  322.      * @return string the id
  323.      */
  324.     function getID()
  325.     {
  326.         return $this->id;
  327.     }
  328.  
  329.     /**
  330.      * Returns the long name for this time zone
  331.      *
  332.      * Returns the long name for this time zone,
  333.      * i.e. "Central Standard Time"
  334.      *
  335.      * @access public
  336.      * @return string the long name
  337.      */
  338.     function getLongName()
  339.     {
  340.         return $this->longname;
  341.     }
  342.  
  343.     /**
  344.      * Returns the short name for this time zone
  345.      *
  346.      * Returns the short name for this time zone, i.e. "CST"
  347.      *
  348.      * @access public
  349.      * @return string the short name
  350.      */
  351.     function getShortName()
  352.     {
  353.         return $this->shortname;
  354.     }
  355.  
  356.     /**
  357.      * Returns the DST long name for this time zone
  358.      *
  359.      * Returns the DST long name for this time zone, i.e. "Central Daylight Time"
  360.      *
  361.      * @access public
  362.      * @return string the daylight savings time long name
  363.      */
  364.     function getDSTLongName()
  365.     {
  366.         return $this->dstlongname;
  367.     }
  368.  
  369.     /**
  370.      * Returns the DST short name for this time zone
  371.      *
  372.      * Returns the DST short name for this time zone, i.e. "CDT"
  373.      *
  374.      * @access public
  375.      * @return string the daylight savings time short name
  376.      */
  377.     function getDSTShortName()
  378.     {
  379.         return $this->dstshortname;
  380.     }
  381.  
  382.     /**
  383.      * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone
  384.      *
  385.      * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone
  386.      *
  387.      * @access public
  388.      * @return int the offset, in milliseconds
  389.      */
  390.     function getRawOffset()
  391.     {
  392.         return $this->offset;
  393.     }
  394.  
  395. } // Date_TimeZone
  396.  
  397.  
  398. //
  399. // Time Zone Data
  400. //  offset is in miliseconds
  401. //
  402. $GLOBALS['_DATE_TIMEZONE_DATA'] = array(
  403.     'Etc/GMT+12' => array(
  404.         'offset' => -43200000,
  405.         'longname' => "GMT-12:00",
  406.         'shortname' => 'GMT-12:00',
  407.         'hasdst' => false ),
  408.     'Etc/GMT+11' => array(
  409.         'offset' => -39600000,
  410.         'longname' => "GMT-11:00",
  411.         'shortname' => 'GMT-11:00',
  412.         'hasdst' => false ),
  413.     'MIT' => array(
  414.         'offset' => -39600000,
  415.         'longname' => "West Samoa Time",
  416.         'shortname' => 'WST',
  417.         'hasdst' => false ),
  418.     'Pacific/Apia' => array(
  419.         'offset' => -39600000,
  420.         'longname' => "West Samoa Time",
  421.         'shortname' => 'WST',
  422.         'hasdst' => false ),
  423.     'Pacific/Midway' => array(
  424.         'offset' => -39600000,
  425.         'longname' => "Samoa Standard Time",
  426.         'shortname' => 'SST',
  427.         'hasdst' => false ),
  428.     'Pacific/Niue' => array(
  429.         'offset' => -39600000,
  430.         'longname' => "Niue Time",
  431.         'shortname' => 'NUT',
  432.         'hasdst' => false ),
  433.     'Pacific/Pago_Pago' => array(
  434.         'offset' => -39600000,
  435.         'longname' => "Samoa Standard Time",
  436.         'shortname' => 'SST',
  437.         'hasdst' => false ),
  438.     'Pacific/Samoa' => array(
  439.         'offset' => -39600000,
  440.         'longname' => "Samoa Standard Time",
  441.         'shortname' => 'SST',
  442.         'hasdst' => false ),
  443.     'US/Samoa' => array(
  444.         'offset' => -39600000,
  445.         'longname' => "Samoa Standard Time",
  446.         'shortname' => 'SST',
  447.         'hasdst' => false ),
  448.     'America/Adak' => array(
  449.         'offset' => -36000000,
  450.         'longname' => "Hawaii-Aleutian Standard Time",
  451.         'shortname' => 'HAST',
  452.         'hasdst' => true,
  453.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  454.         'dstshortname' => 'HADT' ),
  455.     'America/Atka' => array(
  456.         'offset' => -36000000,
  457.         'longname' => "Hawaii-Aleutian Standard Time",
  458.         'shortname' => 'HAST',
  459.         'hasdst' => true,
  460.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  461.         'dstshortname' => 'HADT' ),
  462.     'Etc/GMT+10' => array(
  463.         'offset' => -36000000,
  464.         'longname' => "GMT-10:00",
  465.         'shortname' => 'GMT-10:00',
  466.         'hasdst' => false ),
  467.     'HST' => array(
  468.         'offset' => -36000000,
  469.         'longname' => "Hawaii Standard Time",
  470.         'shortname' => 'HST',
  471.         'hasdst' => false ),
  472.     'Pacific/Fakaofo' => array(
  473.         'offset' => -36000000,
  474.         'longname' => "Tokelau Time",
  475.         'shortname' => 'TKT',
  476.         'hasdst' => false ),
  477.     'Pacific/Honolulu' => array(
  478.         'offset' => -36000000,
  479.         'longname' => "Hawaii Standard Time",
  480.         'shortname' => 'HST',
  481.         'hasdst' => false ),
  482.     'Pacific/Johnston' => array(
  483.         'offset' => -36000000,
  484.         'longname' => "Hawaii Standard Time",
  485.         'shortname' => 'HST',
  486.         'hasdst' => false ),
  487.     'Pacific/Rarotonga' => array(
  488.         'offset' => -36000000,
  489.         'longname' => "Cook Is. Time",
  490.         'shortname' => 'CKT',
  491.         'hasdst' => false ),
  492.     'Pacific/Tahiti' => array(
  493.         'offset' => -36000000,
  494.         'longname' => "Tahiti Time",
  495.         'shortname' => 'TAHT',
  496.         'hasdst' => false ),
  497.     'SystemV/HST10' => array(
  498.         'offset' => -36000000,
  499.         'longname' => "Hawaii Standard Time",
  500.         'shortname' => 'HST',
  501.         'hasdst' => false ),
  502.     'US/Aleutian' => array(
  503.         'offset' => -36000000,
  504.         'longname' => "Hawaii-Aleutian Standard Time",
  505.         'shortname' => 'HAST',
  506.         'hasdst' => true,
  507.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  508.         'dstshortname' => 'HADT' ),
  509.     'US/Hawaii' => array(
  510.         'offset' => -36000000,
  511.         'longname' => "Hawaii Standard Time",
  512.         'shortname' => 'HST',
  513.         'hasdst' => false ),
  514.     'Pacific/Marquesas' => array(
  515.         'offset' => -34200000,
  516.         'longname' => "Marquesas Time",
  517.         'shortname' => 'MART',
  518.         'hasdst' => false ),
  519.     'AST' => array(
  520.         'offset' => -32400000,
  521.         'longname' => "Alaska Standard Time",
  522.         'shortname' => 'AKST',
  523.         'hasdst' => true,
  524.         'dstlongname' => "Alaska Daylight Time",
  525.         'dstshortname' => 'AKDT' ),
  526.     'America/Anchorage' => array(
  527.         'offset' => -32400000,
  528.         'longname' => "Alaska Standard Time",
  529.         'shortname' => 'AKST',
  530.         'hasdst' => true,
  531.         'dstlongname' => "Alaska Daylight Time",
  532.         'dstshortname' => 'AKDT' ),
  533.     'America/Juneau' => array(
  534.         'offset' => -32400000,
  535.         'longname' => "Alaska Standard Time",
  536.         'shortname' => 'AKST',
  537.         'hasdst' => true,
  538.         'dstlongname' => "Alaska Daylight Time",
  539.         'dstshortname' => 'AKDT' ),
  540.     'America/Nome' => array(
  541.         'offset' => -32400000,
  542.         'longname' => "Alaska Standard Time",
  543.         'shortname' => 'AKST',
  544.         'hasdst' => true,
  545.         'dstlongname' => "Alaska Daylight Time",
  546.         'dstshortname' => 'AKDT' ),
  547.     'America/Yakutat' => array(
  548.         'offset' => -32400000,
  549.         'longname' => "Alaska Standard Time",
  550.         'shortname' => 'AKST',
  551.         'hasdst' => true,
  552.         'dstlongname' => "Alaska Daylight Time",
  553.         'dstshortname' => 'AKDT' ),
  554.     'Etc/GMT+9' => array(
  555.         'offset' => -32400000,
  556.         'longname' => "GMT-09:00",
  557.         'shortname' => 'GMT-09:00',
  558.         'hasdst' => false ),
  559.     'Pacific/Gambier' => array(
  560.         'offset' => -32400000,
  561.         'longname' => "Gambier Time",
  562.         'shortname' => 'GAMT',
  563.         'hasdst' => false ),
  564.     'SystemV/YST9' => array(
  565.         'offset' => -32400000,
  566.         'longname' => "Gambier Time",
  567.         'shortname' => 'GAMT',
  568.         'hasdst' => false ),
  569.     'SystemV/YST9YDT' => array(
  570.         'offset' => -32400000,
  571.         'longname' => "Alaska Standard Time",
  572.         'shortname' => 'AKST',
  573.         'hasdst' => true,
  574.         'dstlongname' => "Alaska Daylight Time",
  575.         'dstshortname' => 'AKDT' ),
  576.     'US/Alaska' => array(
  577.         'offset' => -32400000,
  578.         'longname' => "Alaska Standard Time",
  579.         'shortname' => 'AKST',
  580.         'hasdst' => true,
  581.         'dstlongname' => "Alaska Daylight Time",
  582.         'dstshortname' => 'AKDT' ),
  583.     'America/Dawson' => array(
  584.         'offset' => -28800000,
  585.         'longname' => "Pacific Standard Time",
  586.         'shortname' => 'PST',
  587.         'hasdst' => true,
  588.         'dstlongname' => "Pacific Daylight Time",
  589.         'dstshortname' => 'PDT' ),
  590.     'America/Ensenada' => array(
  591.         'offset' => -28800000,
  592.         'longname' => "Pacific Standard Time",
  593.         'shortname' => 'PST',
  594.         'hasdst' => true,
  595.         'dstlongname' => "Pacific Daylight Time",
  596.         'dstshortname' => 'PDT' ),
  597.     'America/Los_Angeles' => array(
  598.         'offset' => -28800000,
  599.         'longname' => "Pacific Standard Time",
  600.         'shortname' => 'PST',
  601.         'hasdst' => true,
  602.         'dstlongname' => "Pacific Daylight Time",
  603.         'dstshortname' => 'PDT' ),
  604.     'America/Tijuana' => array(
  605.         'offset' => -28800000,
  606.         'longname' => "Pacific Standard Time",
  607.         'shortname' => 'PST',
  608.         'hasdst' => true,
  609.         'dstlongname' => "Pacific Daylight Time",
  610.         'dstshortname' => 'PDT' ),
  611.     'America/Vancouver' => array(
  612.         'offset' => -28800000,
  613.         'longname' => "Pacific Standard Time",
  614.         'shortname' => 'PST',
  615.         'hasdst' => true,
  616.         'dstlongname' => "Pacific Daylight Time",
  617.         'dstshortname' => 'PDT' ),
  618.     'America/Whitehorse' => array(
  619.         'offset' => -28800000,
  620.         'longname' => "Pacific Standard Time",
  621.         'shortname' => 'PST',
  622.         'hasdst' => true,
  623.         'dstlongname' => "Pacific Daylight Time",
  624.         'dstshortname' => 'PDT' ),
  625.     'Canada/Pacific' => array(
  626.         'offset' => -28800000,
  627.         'longname' => "Pacific Standard Time",
  628.         'shortname' => 'PST',
  629.         'hasdst' => true,
  630.         'dstlongname' => "Pacific Daylight Time",
  631.         'dstshortname' => 'PDT' ),
  632.     'Canada/Yukon' => array(
  633.         'offset' => -28800000,
  634.         'longname' => "Pacific Standard Time",
  635.         'shortname' => 'PST',
  636.         'hasdst' => true,
  637.         'dstlongname' => "Pacific Daylight Time",
  638.         'dstshortname' => 'PDT' ),
  639.     'Etc/GMT+8' => array(
  640.         'offset' => -28800000,
  641.         'longname' => "GMT-08:00",
  642.         'shortname' => 'GMT-08:00',
  643.         'hasdst' => false ),
  644.     'Mexico/BajaNorte' => array(
  645.         'offset' => -28800000,
  646.         'longname' => "Pacific Standard Time",
  647.         'shortname' => 'PST',
  648.         'hasdst' => true,
  649.         'dstlongname' => "Pacific Daylight Time",
  650.         'dstshortname' => 'PDT' ),
  651.     'PST' => array(
  652.         'offset' => -28800000,
  653.         'longname' => "Pacific Standard Time",
  654.         'shortname' => 'PST',
  655.         'hasdst' => true,
  656.         'dstlongname' => "Pacific Daylight Time",
  657.         'dstshortname' => 'PDT' ),
  658.     'PST8PDT' => array(
  659.         'offset' => -28800000,
  660.         'longname' => "Pacific Standard Time",
  661.         'shortname' => 'PST',
  662.         'hasdst' => true,
  663.         'dstlongname' => "Pacific Daylight Time",
  664.         'dstshortname' => 'PDT' ),
  665.     'Pacific/Pitcairn' => array(
  666.         'offset' => -28800000,
  667.         'longname' => "Pitcairn Standard Time",
  668.         'shortname' => 'PST',
  669.         'hasdst' => false ),
  670.     'SystemV/PST8' => array(
  671.         'offset' => -28800000,
  672.         'longname' => "Pitcairn Standard Time",
  673.         'shortname' => 'PST',
  674.         'hasdst' => false ),
  675.     'SystemV/PST8PDT' => array(
  676.         'offset' => -28800000,
  677.         'longname' => "Pacific Standard Time",
  678.         'shortname' => 'PST',
  679.         'hasdst' => true,
  680.         'dstlongname' => "Pacific Daylight Time",
  681.         'dstshortname' => 'PDT' ),
  682.     'US/Pacific' => array(
  683.         'offset' => -28800000,
  684.         'longname' => "Pacific Standard Time",
  685.         'shortname' => 'PST',
  686.         'hasdst' => true,
  687.         'dstlongname' => "Pacific Daylight Time",
  688.         'dstshortname' => 'PDT' ),
  689.     'US/Pacific-New' => array(
  690.         'offset' => -28800000,
  691.         'longname' => "Pacific Standard Time",
  692.         'shortname' => 'PST',
  693.         'hasdst' => true,
  694.         'dstlongname' => "Pacific Daylight Time",
  695.         'dstshortname' => 'PDT' ),
  696.     'America/Boise' => array(
  697.         'offset' => -25200000,
  698.         'longname' => "Mountain Standard Time",
  699.         'shortname' => 'MST',
  700.         'hasdst' => true,
  701.         'dstlongname' => "Mountain Daylight Time",
  702.         'dstshortname' => 'MDT' ),
  703.     'America/Cambridge_Bay' => array(
  704.         'offset' => -25200000,
  705.         'longname' => "Mountain Standard Time",
  706.         'shortname' => 'MST',
  707.         'hasdst' => true,
  708.         'dstlongname' => "Mountain Daylight Time",
  709.         'dstshortname' => 'MDT' ),
  710.     'America/Chihuahua' => array(
  711.         'offset' => -25200000,
  712.         'longname' => "Mountain Standard Time",
  713.         'shortname' => 'MST',
  714.         'hasdst' => true,
  715.         'dstlongname' => "Mountain Daylight Time",
  716.         'dstshortname' => 'MDT' ),
  717.     'America/Dawson_Creek' => array(
  718.         'offset' => -25200000,
  719.         'longname' => "Mountain Standard Time",
  720.         'shortname' => 'MST',
  721.         'hasdst' => false ),
  722.     'America/Denver' => array(
  723.         'offset' => -25200000,
  724.         'longname' => "Mountain Standard Time",
  725.         'shortname' => 'MST',
  726.         'hasdst' => true,
  727.         'dstlongname' => "Mountain Daylight Time",
  728.         'dstshortname' => 'MDT' ),
  729.     'America/Edmonton' => array(
  730.         'offset' => -25200000,
  731.         'longname' => "Mountain Standard Time",
  732.         'shortname' => 'MST',
  733.         'hasdst' => true,
  734.         'dstlongname' => "Mountain Daylight Time",
  735.         'dstshortname' => 'MDT' ),
  736.     'America/Hermosillo' => array(
  737.         'offset' => -25200000,
  738.         'longname' => "Mountain Standard Time",
  739.         'shortname' => 'MST',
  740.         'hasdst' => false ),
  741.     'America/Inuvik' => array(
  742.         'offset' => -25200000,
  743.         'longname' => "Mountain Standard Time",
  744.         'shortname' => 'MST',
  745.         'hasdst' => true,
  746.         'dstlongname' => "Mountain Daylight Time",
  747.         'dstshortname' => 'MDT' ),
  748.     'America/Mazatlan' => array(
  749.         'offset' => -25200000,
  750.         'longname' => "Mountain Standard Time",
  751.         'shortname' => 'MST',
  752.         'hasdst' => true,
  753.         'dstlongname' => "Mountain Daylight Time",
  754.         'dstshortname' => 'MDT' ),
  755.     'America/Phoenix' => array(
  756.         'offset' => -25200000,
  757.         'longname' => "Mountain Standard Time",
  758.         'shortname' => 'MST',
  759.         'hasdst' => false ),
  760.     'America/Shiprock' => array(
  761.         'offset' => -25200000,
  762.         'longname' => "Mountain Standard Time",
  763.         'shortname' => 'MST',
  764.         'hasdst' => true,
  765.         'dstlongname' => "Mountain Daylight Time",
  766.         'dstshortname' => 'MDT' ),
  767.     'America/Yellowknife' => array(
  768.         'offset' => -25200000,
  769.         'longname' => "Mountain Standard Time",
  770.         'shortname' => 'MST',
  771.         'hasdst' => true,
  772.         'dstlongname' => "Mountain Daylight Time",
  773.         'dstshortname' => 'MDT' ),
  774.     'Canada/Mountain' => array(
  775.         'offset' => -25200000,
  776.         'longname' => "Mountain Standard Time",
  777.         'shortname' => 'MST',
  778.         'hasdst' => true,
  779.         'dstlongname' => "Mountain Daylight Time",
  780.         'dstshortname' => 'MDT' ),
  781.     'Etc/GMT+7' => array(
  782.         'offset' => -25200000,
  783.         'longname' => "GMT-07:00",
  784.         'shortname' => 'GMT-07:00',
  785.         'hasdst' => false ),
  786.     'MST' => array(
  787.         'offset' => -25200000,
  788.         'longname' => "Mountain Standard Time",
  789.         'shortname' => 'MST',
  790.         'hasdst' => true,
  791.         'dstlongname' => "Mountain Daylight Time",
  792.         'dstshortname' => 'MDT' ),
  793.     'MST7MDT' => array(
  794.         'offset' => -25200000,
  795.         'longname' => "Mountain Standard Time",
  796.         'shortname' => 'MST',
  797.         'hasdst' => true,
  798.         'dstlongname' => "Mountain Daylight Time",
  799.         'dstshortname' => 'MDT' ),
  800.     'Mexico/BajaSur' => array(
  801.         'offset' => -25200000,
  802.         'longname' => "Mountain Standard Time",
  803.         'shortname' => 'MST',
  804.         'hasdst' => true,
  805.         'dstlongname' => "Mountain Daylight Time",
  806.         'dstshortname' => 'MDT' ),
  807.     'Navajo' => array(
  808.         'offset' => -25200000,
  809.         'longname' => "Mountain Standard Time",
  810.         'shortname' => 'MST',
  811.         'hasdst' => true,
  812.         'dstlongname' => "Mountain Daylight Time",
  813.         'dstshortname' => 'MDT' ),
  814.     'PNT' => array(
  815.         'offset' => -25200000,
  816.         'longname' => "Mountain Standard Time",
  817.         'shortname' => 'MST',
  818.         'hasdst' => false ),
  819.     'SystemV/MST7' => array(
  820.         'offset' => -25200000,
  821.         'longname' => "Mountain Standard Time",
  822.         'shortname' => 'MST',
  823.         'hasdst' => false ),
  824.     'SystemV/MST7MDT' => array(
  825.         'offset' => -25200000,
  826.         'longname' => "Mountain Standard Time",
  827.         'shortname' => 'MST',
  828.         'hasdst' => true,
  829.         'dstlongname' => "Mountain Daylight Time",
  830.         'dstshortname' => 'MDT' ),
  831.     'US/Arizona' => array(
  832.         'offset' => -25200000,
  833.         'longname' => "Mountain Standard Time",
  834.         'shortname' => 'MST',
  835.         'hasdst' => false ),
  836.     'US/Mountain' => array(
  837.         'offset' => -25200000,
  838.         'longname' => "Mountain Standard Time",
  839.         'shortname' => 'MST',
  840.         'hasdst' => true,
  841.         'dstlongname' => "Mountain Daylight Time",
  842.         'dstshortname' => 'MDT' ),
  843.     'America/Belize' => array(
  844.         'offset' => -21600000,
  845.         'longname' => "Central Standard Time",
  846.         'shortname' => 'CST',
  847.         'hasdst' => false ),
  848.     'America/Cancun' => array(
  849.         'offset' => -21600000,
  850.         'longname' => "Central Standard Time",
  851.         'shortname' => 'CST',
  852.         'hasdst' => true,
  853.         'dstlongname' => "Central Daylight Time",
  854.         'dstshortname' => 'CDT' ),
  855.     'America/Chicago' => array(
  856.         'offset' => -21600000,
  857.         'longname' => "Central Standard Time",
  858.         'shortname' => 'CST',
  859.         'hasdst' => true,
  860.         'dstlongname' => "Central Daylight Time",
  861.         'dstshortname' => 'CDT' ),
  862.     'America/Costa_Rica' => array(
  863.         'offset' => -21600000,
  864.         'longname' => "Central Standard Time",
  865.         'shortname' => 'CST',
  866.         'hasdst' => false ),
  867.     'America/El_Salvador' => array(
  868.         'offset' => -21600000,
  869.         'longname' => "Central Standard Time",
  870.         'shortname' => 'CST',
  871.         'hasdst' => false ),
  872.     'America/Guatemala' => array(
  873.         'offset' => -21600000,
  874.         'longname' => "Central Standard Time",
  875.         'shortname' => 'CST',
  876.         'hasdst' => false ),
  877.     'America/Managua' => array(
  878.         'offset' => -21600000,
  879.         'longname' => "Central Standard Time",
  880.         'shortname' => 'CST',
  881.         'hasdst' => false ),
  882.     'America/Menominee' => array(
  883.         'offset' => -21600000,
  884.         'longname' => "Central Standard Time",
  885.         'shortname' => 'CST',
  886.         'hasdst' => true,
  887.         'dstlongname' => "Central Daylight Time",
  888.         'dstshortname' => 'CDT' ),
  889.     'America/Merida' => array(
  890.         'offset' => -21600000,
  891.         'longname' => "Central Standard Time",
  892.         'shortname' => 'CST',
  893.         'hasdst' => true,
  894.         'dstlongname' => "Central Daylight Time",
  895.         'dstshortname' => 'CDT' ),
  896.     'America/Mexico_City' => array(
  897.         'offset' => -21600000,
  898.         'longname' => "Central Standard Time",
  899.         'shortname' => 'CST',
  900.         'hasdst' => false ),
  901.     'America/Monterrey' => array(
  902.         'offset' => -21600000,
  903.         'longname' => "Central Standard Time",
  904.         'shortname' => 'CST',
  905.         'hasdst' => true,
  906.         'dstlongname' => "Central Daylight Time",
  907.         'dstshortname' => 'CDT' ),
  908.     'America/North_Dakota/Center' => array(
  909.         'offset' => -21600000,
  910.         'longname' => "Central Standard Time",
  911.         'shortname' => 'CST',
  912.         'hasdst' => true,
  913.         'dstlongname' => "Central Daylight Time",
  914.         'dstshortname' => 'CDT' ),
  915.     'America/Rainy_River' => array(
  916.         'offset' => -21600000,
  917.         'longname' => "Central Standard Time",
  918.         'shortname' => 'CST',
  919.         'hasdst' => true,
  920.         'dstlongname' => "Central Daylight Time",
  921.         'dstshortname' => 'CDT' ),
  922.     'America/Rankin_Inlet' => array(
  923.         'offset' => -21600000,
  924.         'longname' => "Eastern Standard Time",
  925.         'shortname' => 'EST',
  926.         'hasdst' => true,
  927.         'dstlongname' => "Eastern Daylight Time",
  928.         'dstshortname' => 'EDT' ),
  929.     'America/Regina' => array(
  930.         'offset' => -21600000,
  931.         'longname' => "Central Standard Time",
  932.         'shortname' => 'CST',
  933.         'hasdst' => false ),
  934.     'America/Swift_Current' => array(
  935.         'offset' => -21600000,
  936.         'longname' => "Central Standard Time",
  937.         'shortname' => 'CST',
  938.         'hasdst' => false ),
  939.     'America/Tegucigalpa' => array(
  940.         'offset' => -21600000,
  941.         'longname' => "Central Standard Time",
  942.         'shortname' => 'CST',
  943.         'hasdst' => false ),
  944.     'America/Winnipeg' => array(
  945.         'offset' => -21600000,
  946.         'longname' => "Central Standard Time",
  947.         'shortname' => 'CST',
  948.         'hasdst' => true,
  949.         'dstlongname' => "Central Daylight Time",
  950.         'dstshortname' => 'CDT' ),
  951.     'CST' => array(
  952.         'offset' => -21600000,
  953.         'longname' => "Central Standard Time",
  954.         'shortname' => 'CST',
  955.         'hasdst' => true,
  956.         'dstlongname' => "Central Daylight Time",
  957.         'dstshortname' => 'CDT' ),
  958.     'CST6CDT' => array(
  959.         'offset' => -21600000,
  960.         'longname' => "Central Standard Time",
  961.         'shortname' => 'CST',
  962.         'hasdst' => true,
  963.         'dstlongname' => "Central Daylight Time",
  964.         'dstshortname' => 'CDT' ),
  965.     'Canada/Central' => array(
  966.         'offset' => -21600000,
  967.         'longname' => "Central Standard Time",
  968.         'shortname' => 'CST',
  969.         'hasdst' => true,
  970.         'dstlongname' => "Central Daylight Time",
  971.         'dstshortname' => 'CDT' ),
  972.     'Canada/East-Saskatchewan' => array(
  973.         'offset' => -21600000,
  974.         'longname' => "Central Standard Time",
  975.         'shortname' => 'CST',
  976.         'hasdst' => false ),
  977.     'Canada/Saskatchewan' => array(
  978.         'offset' => -21600000,
  979.         'longname' => "Central Standard Time",
  980.         'shortname' => 'CST',
  981.         'hasdst' => false ),
  982.     'Chile/EasterIsland' => array(
  983.         'offset' => -21600000,
  984.         'longname' => "Easter Is. Time",
  985.         'shortname' => 'EAST',
  986.         'hasdst' => true,
  987.         'dstlongname' => "Easter Is. Summer Time",
  988.         'dstshortname' => 'EASST' ),
  989.     'Etc/GMT+6' => array(
  990.         'offset' => -21600000,
  991.         'longname' => "GMT-06:00",
  992.         'shortname' => 'GMT-06:00',
  993.         'hasdst' => false ),
  994.     'Mexico/General' => array(
  995.         'offset' => -21600000,
  996.         'longname' => "Central Standard Time",
  997.         'shortname' => 'CST',
  998.         'hasdst' => false ),
  999.     'Pacific/Easter' => array(
  1000.         'offset' => -21600000,
  1001.         'longname' => "Easter Is. Time",
  1002.         'shortname' => 'EAST',
  1003.         'hasdst' => true,
  1004.         'dstlongname' => "Easter Is. Summer Time",
  1005.         'dstshortname' => 'EASST' ),
  1006.     'Pacific/Galapagos' => array(
  1007.         'offset' => -21600000,
  1008.         'longname' => "Galapagos Time",
  1009.         'shortname' => 'GALT',
  1010.         'hasdst' => false ),
  1011.     'SystemV/CST6' => array(
  1012.         'offset' => -21600000,
  1013.         'longname' => "Central Standard Time",
  1014.         'shortname' => 'CST',
  1015.         'hasdst' => false ),
  1016.     'SystemV/CST6CDT' => array(
  1017.         'offset' => -21600000,
  1018.         'longname' => "Central Standard Time",
  1019.         'shortname' => 'CST',
  1020.         'hasdst' => true,
  1021.         'dstlongname' => "Central Daylight Time",
  1022.         'dstshortname' => 'CDT' ),
  1023.     'US/Central' => array(
  1024.         'offset' => -21600000,
  1025.         'longname' => "Central Standard Time",
  1026.         'shortname' => 'CST',
  1027.         'hasdst' => true,
  1028.         'dstlongname' => "Central Daylight Time",
  1029.         'dstshortname' => 'CDT' ),
  1030.     'America/Bogota' => array(
  1031.         'offset' => -18000000,
  1032.         'longname' => "Colombia Time",
  1033.         'shortname' => 'COT',
  1034.         'hasdst' => false ),
  1035.     'America/Cayman' => array(
  1036.         'offset' => -18000000,
  1037.         'longname' => "Eastern Standard Time",
  1038.         'shortname' => 'EST',
  1039.         'hasdst' => false ),
  1040.     'America/Detroit' => array(
  1041.         'offset' => -18000000,
  1042.         'longname' => "Eastern Standard Time",
  1043.         'shortname' => 'EST',
  1044.         'hasdst' => true,
  1045.         'dstlongname' => "Eastern Daylight Time",
  1046.         'dstshortname' => 'EDT' ),
  1047.     'America/Eirunepe' => array(
  1048.         'offset' => -18000000,
  1049.         'longname' => "Acre Time",
  1050.         'shortname' => 'ACT',
  1051.         'hasdst' => false ),
  1052.     'America/Fort_Wayne' => array(
  1053.         'offset' => -18000000,
  1054.         'longname' => "Eastern Standard Time",
  1055.         'shortname' => 'EST',
  1056.         'hasdst' => false ),
  1057.     'America/Grand_Turk' => array(
  1058.         'offset' => -18000000,
  1059.         'longname' => "Eastern Standard Time",
  1060.         'shortname' => 'EST',
  1061.         'hasdst' => true,
  1062.         'dstlongname' => "Eastern Daylight Time",
  1063.         'dstshortname' => 'EDT' ),
  1064.     'America/Guayaquil' => array(
  1065.         'offset' => -18000000,
  1066.         'longname' => "Ecuador Time",
  1067.         'shortname' => 'ECT',
  1068.         'hasdst' => false ),
  1069.     'America/Havana' => array(
  1070.         'offset' => -18000000,
  1071.         'longname' => "Central Standard Time",
  1072.         'shortname' => 'CST',
  1073.         'hasdst' => true,
  1074.         'dstlongname' => "Central Daylight Time",
  1075.         'dstshortname' => 'CDT' ),
  1076.     'America/Indiana/Indianapolis' => array(
  1077.         'offset' => -18000000,
  1078.         'longname' => "Eastern Standard Time",
  1079.         'shortname' => 'EST',
  1080.         'hasdst' => false ),
  1081.     'America/Indiana/Knox' => array(
  1082.         'offset' => -18000000,
  1083.         'longname' => "Eastern Standard Time",
  1084.         'shortname' => 'EST',
  1085.         'hasdst' => false ),
  1086.     'America/Indiana/Marengo' => array(
  1087.         'offset' => -18000000,
  1088.         'longname' => "Eastern Standard Time",
  1089.         'shortname' => 'EST',
  1090.         'hasdst' => false ),
  1091.     'America/Indiana/Vevay' => array(
  1092.         'offset' => -18000000,
  1093.         'longname' => "Eastern Standard Time",
  1094.         'shortname' => 'EST',
  1095.         'hasdst' => false ),
  1096.     'America/Indianapolis' => array(
  1097.         'offset' => -18000000,
  1098.         'longname' => "Eastern Standard Time",
  1099.         'shortname' => 'EST',
  1100.         'hasdst' => false ),
  1101.     'America/Iqaluit' => array(
  1102.         'offset' => -18000000,
  1103.         'longname' => "Eastern Standard Time",
  1104.         'shortname' => 'EST',
  1105.         'hasdst' => true,
  1106.         'dstlongname' => "Eastern Daylight Time",
  1107.         'dstshortname' => 'EDT' ),
  1108.     'America/Jamaica' => array(
  1109.         'offset' => -18000000,
  1110.         'longname' => "Eastern Standard Time",
  1111.         'shortname' => 'EST',
  1112.         'hasdst' => false ),
  1113.     'America/Kentucky/Louisville' => array(
  1114.         'offset' => -18000000,
  1115.         'longname' => "Eastern Standard Time",
  1116.         'shortname' => 'EST',
  1117.         'hasdst' => true,
  1118.         'dstlongname' => "Eastern Daylight Time",
  1119.         'dstshortname' => 'EDT' ),
  1120.     'America/Kentucky/Monticello' => array(
  1121.         'offset' => -18000000,
  1122.         'longname' => "Eastern Standard Time",
  1123.         'shortname' => 'EST',
  1124.         'hasdst' => true,
  1125.         'dstlongname' => "Eastern Daylight Time",
  1126.         'dstshortname' => 'EDT' ),
  1127.     'America/Knox_IN' => array(
  1128.         'offset' => -18000000,
  1129.         'longname' => "Eastern Standard Time",
  1130.         'shortname' => 'EST',
  1131.         'hasdst' => false ),
  1132.     'America/Lima' => array(
  1133.         'offset' => -18000000,
  1134.         'longname' => "Peru Time",
  1135.         'shortname' => 'PET',
  1136.         'hasdst' => false ),
  1137.     'America/Louisville' => array(
  1138.         'offset' => -18000000,
  1139.         'longname' => "Eastern Standard Time",
  1140.         'shortname' => 'EST',
  1141.         'hasdst' => true,
  1142.         'dstlongname' => "Eastern Daylight Time",
  1143.         'dstshortname' => 'EDT' ),
  1144.     'America/Montreal' => array(
  1145.         'offset' => -18000000,
  1146.         'longname' => "Eastern Standard Time",
  1147.         'shortname' => 'EST',
  1148.         'hasdst' => true,
  1149.         'dstlongname' => "Eastern Daylight Time",
  1150.         'dstshortname' => 'EDT' ),
  1151.     'America/Nassau' => array(
  1152.         'offset' => -18000000,
  1153.         'longname' => "Eastern Standard Time",
  1154.         'shortname' => 'EST',
  1155.         'hasdst' => true,
  1156.         'dstlongname' => "Eastern Daylight Time",
  1157.         'dstshortname' => 'EDT' ),
  1158.     'America/New_York' => array(
  1159.         'offset' => -18000000,
  1160.         'longname' => "Eastern Standard Time",
  1161.         'shortname' => 'EST',
  1162.         'hasdst' => true,
  1163.         'dstlongname' => "Eastern Daylight Time",
  1164.         'dstshortname' => 'EDT' ),
  1165.     'America/Nipigon' => array(
  1166.         'offset' => -18000000,
  1167.         'longname' => "Eastern Standard Time",
  1168.         'shortname' => 'EST',
  1169.         'hasdst' => true,
  1170.         'dstlongname' => "Eastern Daylight Time",
  1171.         'dstshortname' => 'EDT' ),
  1172.     'America/Panama' => array(
  1173.         'offset' => -18000000,
  1174.         'longname' => "Eastern Standard Time",
  1175.         'shortname' => 'EST',
  1176.         'hasdst' => false ),
  1177.     'America/Pangnirtung' => array(
  1178.         'offset' => -18000000,
  1179.         'longname' => "Eastern Standard Time",
  1180.         'shortname' => 'EST',
  1181.         'hasdst' => true,
  1182.         'dstlongname' => "Eastern Daylight Time",
  1183.         'dstshortname' => 'EDT' ),
  1184.     'America/Port-au-Prince' => array(
  1185.         'offset' => -18000000,
  1186.         'longname' => "Eastern Standard Time",
  1187.         'shortname' => 'EST',
  1188.         'hasdst' => false ),
  1189.     'America/Porto_Acre' => array(
  1190.         'offset' => -18000000,
  1191.         'longname' => "Acre Time",
  1192.         'shortname' => 'ACT',
  1193.         'hasdst' => false ),
  1194.     'America/Rio_Branco' => array(
  1195.         'offset' => -18000000,
  1196.         'longname' => "Acre Time",
  1197.         'shortname' => 'ACT',
  1198.         'hasdst' => false ),
  1199.     'America/Thunder_Bay' => array(
  1200.         'offset' => -18000000,
  1201.         'longname' => "Eastern Standard Time",
  1202.         'shortname' => 'EST',
  1203.         'hasdst' => true,
  1204.         'dstlongname' => "Eastern Daylight Time",
  1205.         'dstshortname' => 'EDT' ),
  1206.     'Brazil/Acre' => array(
  1207.         'offset' => -18000000,
  1208.         'longname' => "Acre Time",
  1209.         'shortname' => 'ACT',
  1210.         'hasdst' => false ),
  1211.     'Canada/Eastern' => array(
  1212.         'offset' => -18000000,
  1213.         'longname' => "Eastern Standard Time",
  1214.         'shortname' => 'EST',
  1215.         'hasdst' => true,
  1216.         'dstlongname' => "Eastern Daylight Time",
  1217.         'dstshortname' => 'EDT' ),
  1218.     'Cuba' => array(
  1219.         'offset' => -18000000,
  1220.         'longname' => "Central Standard Time",
  1221.         'shortname' => 'CST',
  1222.         'hasdst' => true,
  1223.         'dstlongname' => "Central Daylight Time",
  1224.         'dstshortname' => 'CDT' ),
  1225.     'EST' => array(
  1226.         'offset' => -18000000,
  1227.         'longname' => "Eastern Standard Time",
  1228.         'shortname' => 'EST',
  1229.         'hasdst' => true,
  1230.         'dstlongname' => "Eastern Daylight Time",
  1231.         'dstshortname' => 'EDT' ),
  1232.     'EST5EDT' => array(
  1233.         'offset' => -18000000,
  1234.         'longname' => "Eastern Standard Time",
  1235.         'shortname' => 'EST',
  1236.         'hasdst' => true,
  1237.         'dstlongname' => "Eastern Daylight Time",
  1238.         'dstshortname' => 'EDT' ),
  1239.     'Etc/GMT+5' => array(
  1240.         'offset' => -18000000,
  1241.         'longname' => "GMT-05:00",
  1242.         'shortname' => 'GMT-05:00',
  1243.         'hasdst' => false ),
  1244.     'IET' => array(
  1245.         'offset' => -18000000,
  1246.         'longname' => "Eastern Standard Time",
  1247.         'shortname' => 'EST',
  1248.         'hasdst' => false ),
  1249.     'Jamaica' => array(
  1250.         'offset' => -18000000,
  1251.         'longname' => "Eastern Standard Time",
  1252.         'shortname' => 'EST',
  1253.         'hasdst' => false ),
  1254.     'SystemV/EST5' => array(
  1255.         'offset' => -18000000,
  1256.         'longname' => "Eastern Standard Time",
  1257.         'shortname' => 'EST',
  1258.         'hasdst' => false ),
  1259.     'SystemV/EST5EDT' => array(
  1260.         'offset' => -18000000,
  1261.         'longname' => "Eastern Standard Time",
  1262.         'shortname' => 'EST',
  1263.         'hasdst' => true,
  1264.         'dstlongname' => "Eastern Daylight Time",
  1265.         'dstshortname' => 'EDT' ),
  1266.     'US/East-Indiana' => array(
  1267.         'offset' => -18000000,
  1268.         'longname' => "Eastern Standard Time",
  1269.         'shortname' => 'EST',
  1270.         'hasdst' => false ),
  1271.     'US/Eastern' => array(
  1272.         'offset' => -18000000,
  1273.         'longname' => "Eastern Standard Time",
  1274.         'shortname' => 'EST',
  1275.         'hasdst' => true,
  1276.         'dstlongname' => "Eastern Daylight Time",
  1277.         'dstshortname' => 'EDT' ),
  1278.     'US/Indiana-Starke' => array(
  1279.         'offset' => -18000000,
  1280.         'longname' => "Eastern Standard Time",
  1281.         'shortname' => 'EST',
  1282.         'hasdst' => false ),
  1283.     'US/Michigan' => array(
  1284.         'offset' => -18000000,
  1285.         'longname' => "Eastern Standard Time",
  1286.         'shortname' => 'EST',
  1287.         'hasdst' => true,
  1288.         'dstlongname' => "Eastern Daylight Time",
  1289.         'dstshortname' => 'EDT' ),
  1290.     'America/Anguilla' => array(
  1291.         'offset' => -14400000,
  1292.         'longname' => "Atlantic Standard Time",
  1293.         'shortname' => 'AST',
  1294.         'hasdst' => false ),
  1295.     'America/Antigua' => array(
  1296.         'offset' => -14400000,
  1297.         'longname' => "Atlantic Standard Time",
  1298.         'shortname' => 'AST',
  1299.         'hasdst' => false ),
  1300.     'America/Aruba' => array(
  1301.         'offset' => -14400000,
  1302.         'longname' => "Atlantic Standard Time",
  1303.         'shortname' => 'AST',
  1304.         'hasdst' => false ),
  1305.     'America/Asuncion' => array(
  1306.         'offset' => -14400000,
  1307.         'longname' => "Paraguay Time",
  1308.         'shortname' => 'PYT',
  1309.         'hasdst' => true,
  1310.         'dstlongname' => "Paraguay Summer Time",
  1311.         'dstshortname' => 'PYST' ),
  1312.     'America/Barbados' => array(
  1313.         'offset' => -14400000,
  1314.         'longname' => "Atlantic Standard Time",
  1315.         'shortname' => 'AST',
  1316.         'hasdst' => false ),
  1317.     'America/Boa_Vista' => array(
  1318.         'offset' => -14400000,
  1319.         'longname' => "Amazon Standard Time",
  1320.         'shortname' => 'AMT',
  1321.         'hasdst' => false ),
  1322.     'America/Caracas' => array(
  1323.         'offset' => -14400000,
  1324.         'longname' => "Venezuela Time",
  1325.         'shortname' => 'VET',
  1326.         'hasdst' => false ),
  1327.     'America/Cuiaba' => array(
  1328.         'offset' => -14400000,
  1329.         'longname' => "Amazon Standard Time",
  1330.         'shortname' => 'AMT',
  1331.         'hasdst' => true,
  1332.         'dstlongname' => "Amazon Summer Time",
  1333.         'dstshortname' => 'AMST' ),
  1334.     'America/Curacao' => array(
  1335.         'offset' => -14400000,
  1336.         'longname' => "Atlantic Standard Time",
  1337.         'shortname' => 'AST',
  1338.         'hasdst' => false ),
  1339.     'America/Dominica' => array(
  1340.         'offset' => -14400000,
  1341.         'longname' => "Atlantic Standard Time",
  1342.         'shortname' => 'AST',
  1343.         'hasdst' => false ),
  1344.     'America/Glace_Bay' => array(
  1345.         'offset' => -14400000,
  1346.         'longname' => "Atlantic Standard Time",
  1347.         'shortname' => 'AST',
  1348.         'hasdst' => true,
  1349.         'dstlongname' => "Atlantic Daylight Time",
  1350.         'dstshortname' => 'ADT' ),
  1351.     'America/Goose_Bay' => array(
  1352.         'offset' => -14400000,
  1353.         'longname' => "Atlantic Standard Time",
  1354.         'shortname' => 'AST',
  1355.         'hasdst' => true,
  1356.         'dstlongname' => "Atlantic Daylight Time",
  1357.         'dstshortname' => 'ADT' ),
  1358.     'America/Grenada' => array(
  1359.         'offset' => -14400000,
  1360.         'longname' => "Atlantic Standard Time",
  1361.         'shortname' => 'AST',
  1362.         'hasdst' => false ),
  1363.     'America/Guadeloupe' => array(
  1364.         'offset' => -14400000,
  1365.         'longname' => "Atlantic Standard Time",
  1366.         'shortname' => 'AST',
  1367.         'hasdst' => false ),
  1368.     'America/Guyana' => array(
  1369.         'offset' => -14400000,
  1370.         'longname' => "Guyana Time",
  1371.         'shortname' => 'GYT',
  1372.         'hasdst' => false ),
  1373.     'America/Halifax' => array(
  1374.         'offset' => -14400000,
  1375.         'longname' => "Atlantic Standard Time",
  1376.         'shortname' => 'AST',
  1377.         'hasdst' => true,
  1378.         'dstlongname' => "Atlantic Daylight Time",
  1379.         'dstshortname' => 'ADT' ),
  1380.     'America/La_Paz' => array(
  1381.         'offset' => -14400000,
  1382.         'longname' => "Bolivia Time",
  1383.         'shortname' => 'BOT',
  1384.         'hasdst' => false ),
  1385.     'America/Manaus' => array(
  1386.         'offset' => -14400000,
  1387.         'longname' => "Amazon Standard Time",
  1388.         'shortname' => 'AMT',
  1389.         'hasdst' => false ),
  1390.     'America/Martinique' => array(
  1391.         'offset' => -14400000,
  1392.         'longname' => "Atlantic Standard Time",
  1393.         'shortname' => 'AST',
  1394.         'hasdst' => false ),
  1395.     'America/Montserrat' => array(
  1396.         'offset' => -14400000,
  1397.         'longname' => "Atlantic Standard Time",
  1398.         'shortname' => 'AST',
  1399.         'hasdst' => false ),
  1400.     'America/Port_of_Spain' => array(
  1401.         'offset' => -14400000,
  1402.         'longname' => "Atlantic Standard Time",
  1403.         'shortname' => 'AST',
  1404.         'hasdst' => false ),
  1405.     'America/Porto_Velho' => array(
  1406.         'offset' => -14400000,
  1407.         'longname' => "Amazon Standard Time",
  1408.         'shortname' => 'AMT',
  1409.         'hasdst' => false ),
  1410.     'America/Puerto_Rico' => array(
  1411.         'offset' => -14400000,
  1412.         'longname' => "Atlantic Standard Time",
  1413.         'shortname' => 'AST',
  1414.         'hasdst' => false ),
  1415.     'America/Santiago' => array(
  1416.         'offset' => -14400000,
  1417.         'longname' => "Chile Time",
  1418.         'shortname' => 'CLT',
  1419.         'hasdst' => true,
  1420.         'dstlongname' => "Chile Summer Time",
  1421.         'dstshortname' => 'CLST' ),
  1422.     'America/Santo_Domingo' => array(
  1423.         'offset' => -14400000,
  1424.         'longname' => "Atlantic Standard Time",
  1425.         'shortname' => 'AST',
  1426.         'hasdst' => false ),
  1427.     'America/St_Kitts' => array(
  1428.         'offset' => -14400000,
  1429.         'longname' => "Atlantic Standard Time",
  1430.         'shortname' => 'AST',
  1431.         'hasdst' => false ),
  1432.     'America/St_Lucia' => array(
  1433.         'offset' => -14400000,
  1434.         'longname' => "Atlantic Standard Time",
  1435.         'shortname' => 'AST',
  1436.         'hasdst' => false ),
  1437.     'America/St_Thomas' => array(
  1438.         'offset' => -14400000,
  1439.         'longname' => "Atlantic Standard Time",
  1440.         'shortname' => 'AST',
  1441.         'hasdst' => false ),
  1442.     'America/St_Vincent' => array(
  1443.         'offset' => -14400000,
  1444.         'longname' => "Atlantic Standard Time",
  1445.         'shortname' => 'AST',
  1446.         'hasdst' => false ),
  1447.     'America/Thule' => array(
  1448.         'offset' => -14400000,
  1449.         'longname' => "Atlantic Standard Time",
  1450.         'shortname' => 'AST',
  1451.         'hasdst' => false ),
  1452.     'America/Tortola' => array(
  1453.         'offset' => -14400000,
  1454.         'longname' => "Atlantic Standard Time",
  1455.         'shortname' => 'AST',
  1456.         'hasdst' => false ),
  1457.     'America/Virgin' => array(
  1458.         'offset' => -14400000,
  1459.         'longname' => "Atlantic Standard Time",
  1460.         'shortname' => 'AST',
  1461.         'hasdst' => false ),
  1462.     'Antarctica/Palmer' => array(
  1463.         'offset' => -14400000,
  1464.         'longname' => "Chile Time",
  1465.         'shortname' => 'CLT',
  1466.         'hasdst' => true,
  1467.         'dstlongname' => "Chile Summer Time",
  1468.         'dstshortname' => 'CLST' ),
  1469.     'Atlantic/Bermuda' => array(
  1470.         'offset' => -14400000,
  1471.         'longname' => "Atlantic Standard Time",
  1472.         'shortname' => 'AST',
  1473.         'hasdst' => true,
  1474.         'dstlongname' => "Atlantic Daylight Time",
  1475.         'dstshortname' => 'ADT' ),
  1476.     'Atlantic/Stanley' => array(
  1477.         'offset' => -14400000,
  1478.         'longname' => "Falkland Is. Time",
  1479.         'shortname' => 'FKT',
  1480.         'hasdst' => true,
  1481.         'dstlongname' => "Falkland Is. Summer Time",
  1482.         'dstshortname' => 'FKST' ),
  1483.     'Brazil/West' => array(
  1484.         'offset' => -14400000,
  1485.         'longname' => "Amazon Standard Time",
  1486.         'shortname' => 'AMT',
  1487.         'hasdst' => false ),
  1488.     'Canada/Atlantic' => array(
  1489.         'offset' => -14400000,
  1490.         'longname' => "Atlantic Standard Time",
  1491.         'shortname' => 'AST',
  1492.         'hasdst' => true,
  1493.         'dstlongname' => "Atlantic Daylight Time",
  1494.         'dstshortname' => 'ADT' ),
  1495.     'Chile/Continental' => array(
  1496.         'offset' => -14400000,
  1497.         'longname' => "Chile Time",
  1498.         'shortname' => 'CLT',
  1499.         'hasdst' => true,
  1500.         'dstlongname' => "Chile Summer Time",
  1501.         'dstshortname' => 'CLST' ),
  1502.     'Etc/GMT+4' => array(
  1503.         'offset' => -14400000,
  1504.         'longname' => "GMT-04:00",
  1505.         'shortname' => 'GMT-04:00',
  1506.         'hasdst' => false ),
  1507.     'PRT' => array(
  1508.         'offset' => -14400000,
  1509.         'longname' => "Atlantic Standard Time",
  1510.         'shortname' => 'AST',
  1511.         'hasdst' => false ),
  1512.     'SystemV/AST4' => array(
  1513.         'offset' => -14400000,
  1514.         'longname' => "Atlantic Standard Time",
  1515.         'shortname' => 'AST',
  1516.         'hasdst' => false ),
  1517.     'SystemV/AST4ADT' => array(
  1518.         'offset' => -14400000,
  1519.         'longname' => "Atlantic Standard Time",
  1520.         'shortname' => 'AST',
  1521.         'hasdst' => true,
  1522.         'dstlongname' => "Atlantic Daylight Time",
  1523.         'dstshortname' => 'ADT' ),
  1524.     'America/St_Johns' => array(
  1525.         'offset' => -12600000,
  1526.         'longname' => "Newfoundland Standard Time",
  1527.         'shortname' => 'NST',
  1528.         'hasdst' => true,
  1529.         'dstlongname' => "Newfoundland Daylight Time",
  1530.         'dstshortname' => 'NDT' ),
  1531.     'CNT' => array(
  1532.         'offset' => -12600000,
  1533.         'longname' => "Newfoundland Standard Time",
  1534.         'shortname' => 'NST',
  1535.         'hasdst' => true,
  1536.         'dstlongname' => "Newfoundland Daylight Time",
  1537.         'dstshortname' => 'NDT' ),
  1538.     'Canada/Newfoundland' => array(
  1539.         'offset' => -12600000,
  1540.         'longname' => "Newfoundland Standard Time",
  1541.         'shortname' => 'NST',
  1542.         'hasdst' => true,
  1543.         'dstlongname' => "Newfoundland Daylight Time",
  1544.         'dstshortname' => 'NDT' ),
  1545.     'AGT' => array(
  1546.         'offset' => -10800000,
  1547.         'longname' => "Argentine Time",
  1548.         'shortname' => 'ART',
  1549.         'hasdst' => false ),
  1550.     'America/Araguaina' => array(
  1551.         'offset' => -10800000,
  1552.         'longname' => "Brazil Time",
  1553.         'shortname' => 'BRT',
  1554.         'hasdst' => true,
  1555.         'dstlongname' => "Brazil Summer Time",
  1556.         'dstshortname' => 'BRST' ),
  1557.     'America/Belem' => array(
  1558.         'offset' => -10800000,
  1559.         'longname' => "Brazil Time",
  1560.         'shortname' => 'BRT',
  1561.         'hasdst' => false ),
  1562.     'America/Buenos_Aires' => array(
  1563.         'offset' => -10800000,
  1564.         'longname' => "Argentine Time",
  1565.         'shortname' => 'ART',
  1566.         'hasdst' => false ),
  1567.     'America/Catamarca' => array(
  1568.         'offset' => -10800000,
  1569.         'longname' => "Argentine Time",
  1570.         'shortname' => 'ART',
  1571.         'hasdst' => false ),
  1572.     'America/Cayenne' => array(
  1573.         'offset' => -10800000,
  1574.         'longname' => "French Guiana Time",
  1575.         'shortname' => 'GFT',
  1576.         'hasdst' => false ),
  1577.     'America/Cordoba' => array(
  1578.         'offset' => -10800000,
  1579.         'longname' => "Argentine Time",
  1580.         'shortname' => 'ART',
  1581.         'hasdst' => false ),
  1582.     'America/Fortaleza' => array(
  1583.         'offset' => -10800000,
  1584.         'longname' => "Brazil Time",
  1585.         'shortname' => 'BRT',
  1586.         'hasdst' => true,
  1587.         'dstlongname' => "Brazil Summer Time",
  1588.         'dstshortname' => 'BRST' ),
  1589.     'America/Godthab' => array(
  1590.         'offset' => -10800000,
  1591.         'longname' => "Western Greenland Time",
  1592.         'shortname' => 'WGT',
  1593.         'hasdst' => true,
  1594.         'dstlongname' => "Western Greenland Summer Time",
  1595.         'dstshortname' => 'WGST' ),
  1596.     'America/Jujuy' => array(
  1597.         'offset' => -10800000,
  1598.         'longname' => "Argentine Time",
  1599.         'shortname' => 'ART',
  1600.         'hasdst' => false ),
  1601.     'America/Maceio' => array(
  1602.         'offset' => -10800000,
  1603.         'longname' => "Brazil Time",
  1604.         'shortname' => 'BRT',
  1605.         'hasdst' => true,
  1606.         'dstlongname' => "Brazil Summer Time",
  1607.         'dstshortname' => 'BRST' ),
  1608.     'America/Mendoza' => array(
  1609.         'offset' => -10800000,
  1610.         'longname' => "Argentine Time",
  1611.         'shortname' => 'ART',
  1612.         'hasdst' => false ),
  1613.     'America/Miquelon' => array(
  1614.         'offset' => -10800000,
  1615.         'longname' => "Pierre & Miquelon Standard Time",
  1616.         'shortname' => 'PMST',
  1617.         'hasdst' => true,
  1618.         'dstlongname' => "Pierre & Miquelon Daylight Time",
  1619.         'dstshortname' => 'PMDT' ),
  1620.     'America/Montevideo' => array(
  1621.         'offset' => -10800000,
  1622.         'longname' => "Uruguay Time",
  1623.         'shortname' => 'UYT',
  1624.         'hasdst' => false ),
  1625.     'America/Paramaribo' => array(
  1626.         'offset' => -10800000,
  1627.         'longname' => "Suriname Time",
  1628.         'shortname' => 'SRT',
  1629.         'hasdst' => false ),
  1630.     'America/Recife' => array(
  1631.         'offset' => -10800000,
  1632.         'longname' => "Brazil Time",
  1633.         'shortname' => 'BRT',
  1634.         'hasdst' => true,
  1635.         'dstlongname' => "Brazil Summer Time",
  1636.         'dstshortname' => 'BRST' ),
  1637.     'America/Rosario' => array(
  1638.         'offset' => -10800000,
  1639.         'longname' => "Argentine Time",
  1640.         'shortname' => 'ART',
  1641.         'hasdst' => false ),
  1642.     'America/Sao_Paulo' => array(
  1643.         'offset' => -10800000,
  1644.         'longname' => "Brazil Time",
  1645.         'shortname' => 'BRT',
  1646.         'hasdst' => true,
  1647.         'dstlongname' => "Brazil Summer Time",
  1648.         'dstshortname' => 'BRST' ),
  1649.     'BET' => array(
  1650.         'offset' => -10800000,
  1651.         'longname' => "Brazil Time",
  1652.         'shortname' => 'BRT',
  1653.         'hasdst' => true,
  1654.         'dstlongname' => "Brazil Summer Time",
  1655.         'dstshortname' => 'BRST' ),
  1656.     'Brazil/East' => array(
  1657.         'offset' => -10800000,
  1658.         'longname' => "Brazil Time",
  1659.         'shortname' => 'BRT',
  1660.         'hasdst' => true,
  1661.         'dstlongname' => "Brazil Summer Time",
  1662.         'dstshortname' => 'BRST' ),
  1663.     'Etc/GMT+3' => array(
  1664.         'offset' => -10800000,
  1665.         'longname' => "GMT-03:00",
  1666.         'shortname' => 'GMT-03:00',
  1667.         'hasdst' => false ),
  1668.     'America/Noronha' => array(
  1669.         'offset' => -7200000,
  1670.         'longname' => "Fernando de Noronha Time",
  1671.         'shortname' => 'FNT',
  1672.         'hasdst' => false ),
  1673.     'Atlantic/South_Georgia' => array(
  1674.         'offset' => -7200000,
  1675.         'longname' => "South Georgia Standard Time",
  1676.         'shortname' => 'GST',
  1677.         'hasdst' => false ),
  1678.     'Brazil/DeNoronha' => array(
  1679.         'offset' => -7200000,
  1680.         'longname' => "Fernando de Noronha Time",
  1681.         'shortname' => 'FNT',
  1682.         'hasdst' => false ),
  1683.     'Etc/GMT+2' => array(
  1684.         'offset' => -7200000,
  1685.         'longname' => "GMT-02:00",
  1686.         'shortname' => 'GMT-02:00',
  1687.         'hasdst' => false ),
  1688.     'America/Scoresbysund' => array(
  1689.         'offset' => -3600000,
  1690.         'longname' => "Eastern Greenland Time",
  1691.         'shortname' => 'EGT',
  1692.         'hasdst' => true,
  1693.         'dstlongname' => "Eastern Greenland Summer Time",
  1694.         'dstshortname' => 'EGST' ),
  1695.     'Atlantic/Azores' => array(
  1696.         'offset' => -3600000,
  1697.         'longname' => "Azores Time",
  1698.         'shortname' => 'AZOT',
  1699.         'hasdst' => true,
  1700.         'dstlongname' => "Azores Summer Time",
  1701.         'dstshortname' => 'AZOST' ),
  1702.     'Atlantic/Cape_Verde' => array(
  1703.         'offset' => -3600000,
  1704.         'longname' => "Cape Verde Time",
  1705.         'shortname' => 'CVT',
  1706.         'hasdst' => false ),
  1707.     'Etc/GMT+1' => array(
  1708.         'offset' => -3600000,
  1709.         'longname' => "GMT-01:00",
  1710.         'shortname' => 'GMT-01:00',
  1711.         'hasdst' => false ),
  1712.     'Africa/Abidjan' => array(
  1713.         'offset' => 0,
  1714.         'longname' => "Greenwich Mean Time",
  1715.         'shortname' => 'GMT',
  1716.         'hasdst' => false ),
  1717.     'Africa/Accra' => array(
  1718.         'offset' => 0,
  1719.         'longname' => "Greenwich Mean Time",
  1720.         'shortname' => 'GMT',
  1721.         'hasdst' => false ),
  1722.     'Africa/Bamako' => array(
  1723.         'offset' => 0,
  1724.         'longname' => "Greenwich Mean Time",
  1725.         'shortname' => 'GMT',
  1726.         'hasdst' => false ),
  1727.     'Africa/Banjul' => array(
  1728.         'offset' => 0,
  1729.         'longname' => "Greenwich Mean Time",
  1730.         'shortname' => 'GMT',
  1731.         'hasdst' => false ),
  1732.     'Africa/Bissau' => array(
  1733.         'offset' => 0,
  1734.         'longname' => "Greenwich Mean Time",
  1735.         'shortname' => 'GMT',
  1736.         'hasdst' => false ),
  1737.     'Africa/Casablanca' => array(
  1738.         'offset' => 0,
  1739.         'longname' => "Western European Time",
  1740.         'shortname' => 'WET',
  1741.         'hasdst' => false ),
  1742.     'Africa/Conakry' => array(
  1743.         'offset' => 0,
  1744.         'longname' => "Greenwich Mean Time",
  1745.         'shortname' => 'GMT',
  1746.         'hasdst' => false ),
  1747.     'Africa/Dakar' => array(
  1748.         'offset' => 0,
  1749.         'longname' => "Greenwich Mean Time",
  1750.         'shortname' => 'GMT',
  1751.         'hasdst' => false ),
  1752.     'Africa/El_Aaiun' => array(
  1753.         'offset' => 0,
  1754.         'longname' => "Western European Time",
  1755.         'shortname' => 'WET',
  1756.         'hasdst' => false ),
  1757.     'Africa/Freetown' => array(
  1758.         'offset' => 0,
  1759.         'longname' => "Greenwich Mean Time",
  1760.         'shortname' => 'GMT',
  1761.         'hasdst' => false ),
  1762.     'Africa/Lome' => array(
  1763.         'offset' => 0,
  1764.         'longname' => "Greenwich Mean Time",
  1765.         'shortname' => 'GMT',
  1766.         'hasdst' => false ),
  1767.     'Africa/Monrovia' => array(
  1768.         'offset' => 0,
  1769.         'longname' => "Greenwich Mean Time",
  1770.         'shortname' => 'GMT',
  1771.         'hasdst' => false ),
  1772.     'Africa/Nouakchott' => array(
  1773.         'offset' => 0,
  1774.         'longname' => "Greenwich Mean Time",
  1775.         'shortname' => 'GMT',
  1776.         'hasdst' => false ),
  1777.     'Africa/Ouagadougou' => array(
  1778.         'offset' => 0,
  1779.         'longname' => "Greenwich Mean Time",
  1780.         'shortname' => 'GMT',
  1781.         'hasdst' => false ),
  1782.     'Africa/Sao_Tome' => array(
  1783.         'offset' => 0,
  1784.         'longname' => "Greenwich Mean Time",
  1785.         'shortname' => 'GMT',
  1786.         'hasdst' => false ),
  1787.     'Africa/Timbuktu' => array(
  1788.         'offset' => 0,
  1789.         'longname' => "Greenwich Mean Time",
  1790.         'shortname' => 'GMT',
  1791.         'hasdst' => false ),
  1792.     'America/Danmarkshavn' => array(
  1793.         'offset' => 0,
  1794.         'longname' => "Greenwich Mean Time",
  1795.         'shortname' => 'GMT',
  1796.         'hasdst' => false ),
  1797.     'Atlantic/Canary' => array(
  1798.         'offset' => 0,
  1799.         'longname' => "Western European Time",
  1800.         'shortname' => 'WET',
  1801.         'hasdst' => true,
  1802.         'dstlongname' => "Western European Summer Time",
  1803.         'dstshortname' => 'WEST' ),
  1804.     'Atlantic/Faeroe' => array(
  1805.         'offset' => 0,
  1806.         'longname' => "Western European Time",
  1807.         'shortname' => 'WET',
  1808.         'hasdst' => true,
  1809.         'dstlongname' => "Western European Summer Time",
  1810.         'dstshortname' => 'WEST' ),
  1811.     'Atlantic/Madeira' => array(
  1812.         'offset' => 0,
  1813.         'longname' => "Western European Time",
  1814.         'shortname' => 'WET',
  1815.         'hasdst' => true,
  1816.         'dstlongname' => "Western European Summer Time",
  1817.         'dstshortname' => 'WEST' ),
  1818.     'Atlantic/Reykjavik' => array(
  1819.         'offset' => 0,
  1820.         'longname' => "Greenwich Mean Time",
  1821.         'shortname' => 'GMT',
  1822.         'hasdst' => false ),
  1823.     'Atlantic/St_Helena' => array(
  1824.         'offset' => 0,
  1825.         'longname' => "Greenwich Mean Time",
  1826.         'shortname' => 'GMT',
  1827.         'hasdst' => false ),
  1828.     'Eire' => array(
  1829.         'offset' => 0,
  1830.         'longname' => "Greenwich Mean Time",
  1831.         'shortname' => 'GMT',
  1832.         'hasdst' => true,
  1833.         'dstlongname' => "Irish Summer Time",
  1834.         'dstshortname' => 'IST' ),
  1835.     'Etc/GMT' => array(
  1836.         'offset' => 0,
  1837.         'longname' => "GMT+00:00",
  1838.         'shortname' => 'GMT+00:00',
  1839.         'hasdst' => false ),
  1840.     'Etc/GMT+0' => array(
  1841.         'offset' => 0,
  1842.         'longname' => "GMT+00:00",
  1843.         'shortname' => 'GMT+00:00',
  1844.         'hasdst' => false ),
  1845.     'Etc/GMT-0' => array(
  1846.         'offset' => 0,
  1847.         'longname' => "GMT+00:00",
  1848.         'shortname' => 'GMT+00:00',
  1849.         'hasdst' => false ),
  1850.     'Etc/GMT0' => array(
  1851.         'offset' => 0,
  1852.         'longname' => "GMT+00:00",
  1853.         'shortname' => 'GMT+00:00',
  1854.         'hasdst' => false ),
  1855.     'Etc/Greenwich' => array(
  1856.         'offset' => 0,
  1857.         'longname' => "Greenwich Mean Time",
  1858.         'shortname' => 'GMT',
  1859.         'hasdst' => false ),
  1860.     'Etc/UCT' => array(
  1861.         'offset' => 0,
  1862.         'longname' => "Coordinated Universal Time",
  1863.         'shortname' => 'UTC',
  1864.         'hasdst' => false ),
  1865.     'Etc/UTC' => array(
  1866.         'offset' => 0,
  1867.         'longname' => "Coordinated Universal Time",
  1868.         'shortname' => 'UTC',
  1869.         'hasdst' => false ),
  1870.     'Etc/Universal' => array(
  1871.         'offset' => 0,
  1872.         'longname' => "Coordinated Universal Time",
  1873.         'shortname' => 'UTC',
  1874.         'hasdst' => false ),
  1875.     'Etc/Zulu' => array(
  1876.         'offset' => 0,
  1877.         'longname' => "Coordinated Universal Time",
  1878.         'shortname' => 'UTC',
  1879.         'hasdst' => false ),
  1880.     'Europe/Belfast' => array(
  1881.         'offset' => 0,
  1882.         'longname' => "Greenwich Mean Time",
  1883.         'shortname' => 'GMT',
  1884.         'hasdst' => true,
  1885.         'dstlongname' => "British Summer Time",
  1886.         'dstshortname' => 'BST' ),
  1887.     'Europe/Dublin' => array(
  1888.         'offset' => 0,
  1889.         'longname' => "Greenwich Mean Time",
  1890.         'shortname' => 'GMT',
  1891.         'hasdst' => true,
  1892.         'dstlongname' => "Irish Summer Time",
  1893.         'dstshortname' => 'IST' ),
  1894.     'Europe/Lisbon' => array(
  1895.         'offset' => 0,
  1896.         'longname' => "Western European Time",
  1897.         'shortname' => 'WET',
  1898.         'hasdst' => true,
  1899.         'dstlongname' => "Western European Summer Time",
  1900.         'dstshortname' => 'WEST' ),
  1901.     'Europe/London' => array(
  1902.         'offset' => 0,
  1903.         'longname' => "Greenwich Mean Time",
  1904.         'shortname' => 'GMT',
  1905.         'hasdst' => true,
  1906.         'dstlongname' => "British Summer Time",
  1907.         'dstshortname' => 'BST' ),
  1908.     'GB' => array(
  1909.         'offset' => 0,
  1910.         'longname' => "Greenwich Mean Time",
  1911.         'shortname' => 'GMT',
  1912.         'hasdst' => true,
  1913.         'dstlongname' => "British Summer Time",
  1914.         'dstshortname' => 'BST' ),
  1915.     'GB-Eire' => array(
  1916.         'offset' => 0,
  1917.         'longname' => "Greenwich Mean Time",
  1918.         'shortname' => 'GMT',
  1919.         'hasdst' => true,
  1920.         'dstlongname' => "British Summer Time",
  1921.         'dstshortname' => 'BST' ),
  1922.     'GMT' => array(
  1923.         'offset' => 0,
  1924.         'longname' => "Greenwich Mean Time",
  1925.         'shortname' => 'GMT',
  1926.         'hasdst' => false ),
  1927.     'GMT0' => array(
  1928.         'offset' => 0,
  1929.         'longname' => "GMT+00:00",
  1930.         'shortname' => 'GMT+00:00',
  1931.         'hasdst' => false ),
  1932.     'Greenwich' => array(
  1933.         'offset' => 0,
  1934.         'longname' => "Greenwich Mean Time",
  1935.         'shortname' => 'GMT',
  1936.         'hasdst' => false ),
  1937.     'Iceland' => array(
  1938.         'offset' => 0,
  1939.         'longname' => "Greenwich Mean Time",
  1940.         'shortname' => 'GMT',
  1941.         'hasdst' => false ),
  1942.     'Portugal' => array(
  1943.         'offset' => 0,
  1944.         'longname' => "Western European Time",
  1945.         'shortname' => 'WET',
  1946.         'hasdst' => true,
  1947.         'dstlongname' => "Western European Summer Time",
  1948.         'dstshortname' => 'WEST' ),
  1949.     'UCT' => array(
  1950.         'offset' => 0,
  1951.         'longname' => "Coordinated Universal Time",
  1952.         'shortname' => 'UTC',
  1953.         'hasdst' => false ),
  1954.     'UTC' => array(
  1955.         'offset' => 0,
  1956.         'longname' => "Coordinated Universal Time",
  1957.         'shortname' => 'UTC',
  1958.         'hasdst' => false ),
  1959.     'Universal' => array(
  1960.         'offset' => 0,
  1961.         'longname' => "Coordinated Universal Time",
  1962.         'shortname' => 'UTC',
  1963.         'hasdst' => false ),
  1964.     'WET' => array(
  1965.         'offset' => 0,
  1966.         'longname' => "Western European Time",
  1967.         'shortname' => 'WET',
  1968.         'hasdst' => true,
  1969.         'dstlongname' => "Western European Summer Time",
  1970.         'dstshortname' => 'WEST' ),
  1971.     'Zulu' => array(
  1972.         'offset' => 0,
  1973.         'longname' => "Coordinated Universal Time",
  1974.         'shortname' => 'UTC',
  1975.         'hasdst' => false ),
  1976.     'Africa/Algiers' => array(
  1977.         'offset' => 3600000,
  1978.         'longname' => "Central European Time",
  1979.         'shortname' => 'CET',
  1980.         'hasdst' => false ),
  1981.     'Africa/Bangui' => array(
  1982.         'offset' => 3600000,
  1983.         'longname' => "Western African Time",
  1984.         'shortname' => 'WAT',
  1985.         'hasdst' => false ),
  1986.     'Africa/Brazzaville' => array(
  1987.         'offset' => 3600000,
  1988.         'longname' => "Western African Time",
  1989.         'shortname' => 'WAT',
  1990.         'hasdst' => false ),
  1991.     'Africa/Ceuta' => array(
  1992.         'offset' => 3600000,
  1993.         'longname' => "Central European Time",
  1994.         'shortname' => 'CET',
  1995.         'hasdst' => true,
  1996.         'dstlongname' => "Central European Summer Time",
  1997.         'dstshortname' => 'CEST' ),
  1998.     'Africa/Douala' => array(
  1999.         'offset' => 3600000,
  2000.         'longname' => "Western African Time",
  2001.         'shortname' => 'WAT',
  2002.         'hasdst' => false ),
  2003.     'Africa/Kinshasa' => array(
  2004.         'offset' => 3600000,
  2005.         'longname' => "Western African Time",
  2006.         'shortname' => 'WAT',
  2007.         'hasdst' => false ),
  2008.     'Africa/Lagos' => array(
  2009.         'offset' => 3600000,
  2010.         'longname' => "Western African Time",
  2011.         'shortname' => 'WAT',
  2012.         'hasdst' => false ),
  2013.     'Africa/Libreville' => array(
  2014.         'offset' => 3600000,
  2015.         'longname' => "Western African Time",
  2016.         'shortname' => 'WAT',
  2017.         'hasdst' => false ),
  2018.     'Africa/Luanda' => array(
  2019.         'offset' => 3600000,
  2020.         'longname' => "Western African Time",
  2021.         'shortname' => 'WAT',
  2022.         'hasdst' => false ),
  2023.     'Africa/Malabo' => array(
  2024.         'offset' => 3600000,
  2025.         'longname' => "Western African Time",
  2026.         'shortname' => 'WAT',
  2027.         'hasdst' => false ),
  2028.     'Africa/Ndjamena' => array(
  2029.         'offset' => 3600000,
  2030.         'longname' => "Western African Time",
  2031.         'shortname' => 'WAT',
  2032.         'hasdst' => false ),
  2033.     'Africa/Niamey' => array(
  2034.         'offset' => 3600000,
  2035.         'longname' => "Western African Time",
  2036.         'shortname' => 'WAT',
  2037.         'hasdst' => false ),
  2038.     'Africa/Porto-Novo' => array(
  2039.         'offset' => 3600000,
  2040.         'longname' => "Western African Time",
  2041.         'shortname' => 'WAT',
  2042.         'hasdst' => false ),
  2043.     'Africa/Tunis' => array(
  2044.         'offset' => 3600000,
  2045.         'longname' => "Central European Time",
  2046.         'shortname' => 'CET',
  2047.         'hasdst' => false ),
  2048.     'Africa/Windhoek' => array(
  2049.         'offset' => 3600000,
  2050.         'longname' => "Western African Time",
  2051.         'shortname' => 'WAT',
  2052.         'hasdst' => true,
  2053.         'dstlongname' => "Western African Summer Time",
  2054.         'dstshortname' => 'WAST' ),
  2055.     'Arctic/Longyearbyen' => array(
  2056.         'offset' => 3600000,
  2057.         'longname' => "Central European Time",
  2058.         'shortname' => 'CET',
  2059.         'hasdst' => true,
  2060.         'dstlongname' => "Central European Summer Time",
  2061.         'dstshortname' => 'CEST' ),
  2062.     'Atlantic/Jan_Mayen' => array(
  2063.         'offset' => 3600000,
  2064.         'longname' => "Eastern Greenland Time",
  2065.         'shortname' => 'EGT',
  2066.         'hasdst' => true,
  2067.         'dstlongname' => "Eastern Greenland Summer Time",
  2068.         'dstshortname' => 'EGST' ),
  2069.     'CET' => array(
  2070.         'offset' => 3600000,
  2071.         'longname' => "Central European Time",
  2072.         'shortname' => 'CET',
  2073.         'hasdst' => true,
  2074.         'dstlongname' => "Central European Summer Time",
  2075.         'dstshortname' => 'CEST' ),
  2076.     'ECT' => array(
  2077.         'offset' => 3600000,
  2078.         'longname' => "Central European Time",
  2079.         'shortname' => 'CET',
  2080.         'hasdst' => true,
  2081.         'dstlongname' => "Central European Summer Time",
  2082.         'dstshortname' => 'CEST' ),
  2083.     'Etc/GMT-1' => array(
  2084.         'offset' => 3600000,
  2085.         'longname' => "GMT+01:00",
  2086.         'shortname' => 'GMT+01:00',
  2087.         'hasdst' => false ),
  2088.     'Europe/Amsterdam' => array(
  2089.         'offset' => 3600000,
  2090.         'longname' => "Central European Time",
  2091.         'shortname' => 'CET',
  2092.         'hasdst' => true,
  2093.         'dstlongname' => "Central European Summer Time",
  2094.         'dstshortname' => 'CEST' ),
  2095.     'Europe/Andorra' => array(
  2096.         'offset' => 3600000,
  2097.         'longname' => "Central European Time",
  2098.         'shortname' => 'CET',
  2099.         'hasdst' => true,
  2100.         'dstlongname' => "Central European Summer Time",
  2101.         'dstshortname' => 'CEST' ),
  2102.     'Europe/Belgrade' => array(
  2103.         'offset' => 3600000,
  2104.         'longname' => "Central European Time",
  2105.         'shortname' => 'CET',
  2106.         'hasdst' => true,
  2107.         'dstlongname' => "Central European Summer Time",
  2108.         'dstshortname' => 'CEST' ),
  2109.     'Europe/Berlin' => array(
  2110.         'offset' => 3600000,
  2111.         'longname' => "Central European Time",
  2112.         'shortname' => 'CET',
  2113.         'hasdst' => true,
  2114.         'dstlongname' => "Central European Summer Time",
  2115.         'dstshortname' => 'CEST' ),
  2116.     'Europe/Bratislava' => array(
  2117.         'offset' => 3600000,
  2118.         'longname' => "Central European Time",
  2119.         'shortname' => 'CET',
  2120.         'hasdst' => true,
  2121.         'dstlongname' => "Central European Summer Time",
  2122.         'dstshortname' => 'CEST' ),
  2123.     'Europe/Brussels' => array(
  2124.         'offset' => 3600000,
  2125.         'longname' => "Central European Time",
  2126.         'shortname' => 'CET',
  2127.         'hasdst' => true,
  2128.         'dstlongname' => "Central European Summer Time",
  2129.         'dstshortname' => 'CEST' ),
  2130.     'Europe/Budapest' => array(
  2131.         'offset' => 3600000,
  2132.         'longname' => "Central European Time",
  2133.         'shortname' => 'CET',
  2134.         'hasdst' => true,
  2135.         'dstlongname' => "Central European Summer Time",
  2136.         'dstshortname' => 'CEST' ),
  2137.     'Europe/Copenhagen' => array(
  2138.         'offset' => 3600000,
  2139.         'longname' => "Central European Time",
  2140.         'shortname' => 'CET',
  2141.         'hasdst' => true,
  2142.         'dstlongname' => "Central European Summer Time",
  2143.         'dstshortname' => 'CEST' ),
  2144.     'Europe/Gibraltar' => array(
  2145.         'offset' => 3600000,
  2146.         'longname' => "Central European Time",
  2147.         'shortname' => 'CET',
  2148.         'hasdst' => true,
  2149.         'dstlongname' => "Central European Summer Time",
  2150.         'dstshortname' => 'CEST' ),
  2151.     'Europe/Ljubljana' => array(
  2152.         'offset' => 3600000,
  2153.         'longname' => "Central European Time",
  2154.         'shortname' => 'CET',
  2155.         'hasdst' => true,
  2156.         'dstlongname' => "Central European Summer Time",
  2157.         'dstshortname' => 'CEST' ),
  2158.     'Europe/Luxembourg' => array(
  2159.         'offset' => 3600000,
  2160.         'longname' => "Central European Time",
  2161.         'shortname' => 'CET',
  2162.         'hasdst' => true,
  2163.         'dstlongname' => "Central European Summer Time",
  2164.         'dstshortname' => 'CEST' ),
  2165.     'Europe/Madrid' => array(
  2166.         'offset' => 3600000,
  2167.         'longname' => "Central European Time",
  2168.         'shortname' => 'CET',
  2169.         'hasdst' => true,
  2170.         'dstlongname' => "Central European Summer Time",
  2171.         'dstshortname' => 'CEST' ),
  2172.     'Europe/Malta' => array(
  2173.         'offset' => 3600000,
  2174.         'longname' => "Central European Time",
  2175.         'shortname' => 'CET',
  2176.         'hasdst' => true,
  2177.         'dstlongname' => "Central European Summer Time",
  2178.         'dstshortname' => 'CEST' ),
  2179.     'Europe/Monaco' => array(
  2180.         'offset' => 3600000,
  2181.         'longname' => "Central European Time",
  2182.         'shortname' => 'CET',
  2183.         'hasdst' => true,
  2184.         'dstlongname' => "Central European Summer Time",
  2185.         'dstshortname' => 'CEST' ),
  2186.     'Europe/Oslo' => array(
  2187.         'offset' => 3600000,
  2188.         'longname' => "Central European Time",
  2189.         'shortname' => 'CET',
  2190.         'hasdst' => true,
  2191.         'dstlongname' => "Central European Summer Time",
  2192.         'dstshortname' => 'CEST' ),
  2193.     'Europe/Paris' => array(
  2194.         'offset' => 3600000,
  2195.         'longname' => "Central European Time",
  2196.         'shortname' => 'CET',
  2197.         'hasdst' => true,
  2198.         'dstlongname' => "Central European Summer Time",
  2199.         'dstshortname' => 'CEST' ),
  2200.     'Europe/Prague' => array(
  2201.         'offset' => 3600000,
  2202.         'longname' => "Central European Time",
  2203.         'shortname' => 'CET',
  2204.         'hasdst' => true,
  2205.         'dstlongname' => "Central European Summer Time",
  2206.         'dstshortname' => 'CEST' ),
  2207.     'Europe/Rome' => array(
  2208.         'offset' => 3600000,
  2209.         'longname' => "Central European Time",
  2210.         'shortname' => 'CET',
  2211.         'hasdst' => true,
  2212.         'dstlongname' => "Central European Summer Time",
  2213.         'dstshortname' => 'CEST' ),
  2214.     'Europe/San_Marino' => array(
  2215.         'offset' => 3600000,
  2216.         'longname' => "Central European Time",
  2217.         'shortname' => 'CET',
  2218.         'hasdst' => true,
  2219.         'dstlongname' => "Central European Summer Time",
  2220.         'dstshortname' => 'CEST' ),
  2221.     'Europe/Sarajevo' => array(
  2222.         'offset' => 3600000,
  2223.         'longname' => "Central European Time",
  2224.         'shortname' => 'CET',
  2225.         'hasdst' => true,
  2226.         'dstlongname' => "Central European Summer Time",
  2227.         'dstshortname' => 'CEST' ),
  2228.     'Europe/Skopje' => array(
  2229.         'offset' => 3600000,
  2230.         'longname' => "Central European Time",
  2231.         'shortname' => 'CET',
  2232.         'hasdst' => true,
  2233.         'dstlongname' => "Central European Summer Time",
  2234.         'dstshortname' => 'CEST' ),
  2235.     'Europe/Stockholm' => array(
  2236.         'offset' => 3600000,
  2237.         'longname' => "Central European Time",
  2238.         'shortname' => 'CET',
  2239.         'hasdst' => true,
  2240.         'dstlongname' => "Central European Summer Time",
  2241.         'dstshortname' => 'CEST' ),
  2242.     'Europe/Tirane' => array(
  2243.         'offset' => 3600000,
  2244.         'longname' => "Central European Time",
  2245.         'shortname' => 'CET',
  2246.         'hasdst' => true,
  2247.         'dstlongname' => "Central European Summer Time",
  2248.         'dstshortname' => 'CEST' ),
  2249.     'Europe/Vaduz' => array(
  2250.         'offset' => 3600000,
  2251.         'longname' => "Central European Time",
  2252.         'shortname' => 'CET',
  2253.         'hasdst' => true,
  2254.         'dstlongname' => "Central European Summer Time",
  2255.         'dstshortname' => 'CEST' ),
  2256.     'Europe/Vatican' => array(
  2257.         'offset' => 3600000,
  2258.         'longname' => "Central European Time",
  2259.         'shortname' => 'CET',
  2260.         'hasdst' => true,
  2261.         'dstlongname' => "Central European Summer Time",
  2262.         'dstshortname' => 'CEST' ),
  2263.     'Europe/Vienna' => array(
  2264.         'offset' => 3600000,
  2265.         'longname' => "Central European Time",
  2266.         'shortname' => 'CET',
  2267.         'hasdst' => true,
  2268.         'dstlongname' => "Central European Summer Time",
  2269.         'dstshortname' => 'CEST' ),
  2270.     'Europe/Warsaw' => array(
  2271.         'offset' => 3600000,
  2272.         'longname' => "Central European Time",
  2273.         'shortname' => 'CET',
  2274.         'hasdst' => true,
  2275.         'dstlongname' => "Central European Summer Time",
  2276.         'dstshortname' => 'CEST' ),
  2277.     'Europe/Zagreb' => array(
  2278.         'offset' => 3600000,
  2279.         'longname' => "Central European Time",
  2280.         'shortname' => 'CET',
  2281.         'hasdst' => true,
  2282.         'dstlongname' => "Central European Summer Time",
  2283.         'dstshortname' => 'CEST' ),
  2284.     'Europe/Zurich' => array(
  2285.         'offset' => 3600000,
  2286.         'longname' => "Central European Time",
  2287.         'shortname' => 'CET',
  2288.         'hasdst' => true,
  2289.         'dstlongname' => "Central European Summer Time",
  2290.         'dstshortname' => 'CEST' ),
  2291.     'MET' => array(
  2292.         'offset' => 3600000,
  2293.         'longname' => "Middle Europe Time",
  2294.         'shortname' => 'MET',
  2295.         'hasdst' => true,
  2296.         'dstlongname' => "Middle Europe Summer Time",
  2297.         'dstshortname' => 'MEST' ),
  2298.     'Poland' => array(
  2299.         'offset' => 3600000,
  2300.         'longname' => "Central European Time",
  2301.         'shortname' => 'CET',
  2302.         'hasdst' => true,
  2303.         'dstlongname' => "Central European Summer Time",
  2304.         'dstshortname' => 'CEST' ),
  2305.     'ART' => array(
  2306.         'offset' => 7200000,
  2307.         'longname' => "Eastern European Time",
  2308.         'shortname' => 'EET',
  2309.         'hasdst' => true,
  2310.         'dstlongname' => "Eastern European Summer Time",
  2311.         'dstshortname' => 'EEST' ),
  2312.     'Africa/Blantyre' => array(
  2313.         'offset' => 7200000,
  2314.         'longname' => "Central African Time",
  2315.         'shortname' => 'CAT',
  2316.         'hasdst' => false ),
  2317.     'Africa/Bujumbura' => array(
  2318.         'offset' => 7200000,
  2319.         'longname' => "Central African Time",
  2320.         'shortname' => 'CAT',
  2321.         'hasdst' => false ),
  2322.     'Africa/Cairo' => array(
  2323.         'offset' => 7200000,
  2324.         'longname' => "Eastern European Time",
  2325.         'shortname' => 'EET',
  2326.         'hasdst' => true,
  2327.         'dstlongname' => "Eastern European Summer Time",
  2328.         'dstshortname' => 'EEST' ),
  2329.     'Africa/Gaborone' => array(
  2330.         'offset' => 7200000,
  2331.         'longname' => "Central African Time",
  2332.         'shortname' => 'CAT',
  2333.         'hasdst' => false ),
  2334.     'Africa/Harare' => array(
  2335.         'offset' => 7200000,
  2336.         'longname' => "Central African Time",
  2337.         'shortname' => 'CAT',
  2338.         'hasdst' => false ),
  2339.     'Africa/Johannesburg' => array(
  2340.         'offset' => 7200000,
  2341.         'longname' => "South Africa Standard Time",
  2342.         'shortname' => 'SAST',
  2343.         'hasdst' => false ),
  2344.     'Africa/Kigali' => array(
  2345.         'offset' => 7200000,
  2346.         'longname' => "Central African Time",
  2347.         'shortname' => 'CAT',
  2348.         'hasdst' => false ),
  2349.     'Africa/Lubumbashi' => array(
  2350.         'offset' => 7200000,
  2351.         'longname' => "Central African Time",
  2352.         'shortname' => 'CAT',
  2353.         'hasdst' => false ),
  2354.     'Africa/Lusaka' => array(
  2355.         'offset' => 7200000,
  2356.         'longname' => "Central African Time",
  2357.         'shortname' => 'CAT',
  2358.         'hasdst' => false ),
  2359.     'Africa/Maputo' => array(
  2360.         'offset' => 7200000,
  2361.         'longname' => "Central African Time",
  2362.         'shortname' => 'CAT',
  2363.         'hasdst' => false ),
  2364.     'Africa/Maseru' => array(
  2365.         'offset' => 7200000,
  2366.         'longname' => "South Africa Standard Time",
  2367.         'shortname' => 'SAST',
  2368.         'hasdst' => false ),
  2369.     'Africa/Mbabane' => array(
  2370.         'offset' => 7200000,
  2371.         'longname' => "South Africa Standard Time",
  2372.         'shortname' => 'SAST',
  2373.         'hasdst' => false ),
  2374.     'Africa/Tripoli' => array(
  2375.         'offset' => 7200000,
  2376.         'longname' => "Eastern European Time",
  2377.         'shortname' => 'EET',
  2378.         'hasdst' => false ),
  2379.     'Asia/Amman' => array(
  2380.         'offset' => 7200000,
  2381.         'longname' => "Eastern European Time",
  2382.         'shortname' => 'EET',
  2383.         'hasdst' => true,
  2384.         'dstlongname' => "Eastern European Summer Time",
  2385.         'dstshortname' => 'EEST' ),
  2386.     'Asia/Beirut' => array(
  2387.         'offset' => 7200000,
  2388.         'longname' => "Eastern European Time",
  2389.         'shortname' => 'EET',
  2390.         'hasdst' => true,
  2391.         'dstlongname' => "Eastern European Summer Time",
  2392.         'dstshortname' => 'EEST' ),
  2393.     'Asia/Damascus' => array(
  2394.         'offset' => 7200000,
  2395.         'longname' => "Eastern European Time",
  2396.         'shortname' => 'EET',
  2397.         'hasdst' => true,
  2398.         'dstlongname' => "Eastern European Summer Time",
  2399.         'dstshortname' => 'EEST' ),
  2400.     'Asia/Gaza' => array(
  2401.         'offset' => 7200000,
  2402.         'longname' => "Eastern European Time",
  2403.         'shortname' => 'EET',
  2404.         'hasdst' => true,
  2405.         'dstlongname' => "Eastern European Summer Time",
  2406.         'dstshortname' => 'EEST' ),
  2407.     'Asia/Istanbul' => array(
  2408.         'offset' => 7200000,
  2409.         'longname' => "Eastern European Time",
  2410.         'shortname' => 'EET',
  2411.         'hasdst' => true,
  2412.         'dstlongname' => "Eastern European Summer Time",
  2413.         'dstshortname' => 'EEST' ),
  2414.     'Asia/Jerusalem' => array(
  2415.         'offset' => 7200000,
  2416.         'longname' => "Israel Standard Time",
  2417.         'shortname' => 'IST',
  2418.         'hasdst' => true,
  2419.         'dstlongname' => "Israel Daylight Time",
  2420.         'dstshortname' => 'IDT' ),
  2421.     'Asia/Nicosia' => array(
  2422.         'offset' => 7200000,
  2423.         'longname' => "Eastern European Time",
  2424.         'shortname' => 'EET',
  2425.         'hasdst' => true,
  2426.         'dstlongname' => "Eastern European Summer Time",
  2427.         'dstshortname' => 'EEST' ),
  2428.     'Asia/Tel_Aviv' => array(
  2429.         'offset' => 7200000,
  2430.         'longname' => "Israel Standard Time",
  2431.         'shortname' => 'IST',
  2432.         'hasdst' => true,
  2433.         'dstlongname' => "Israel Daylight Time",
  2434.         'dstshortname' => 'IDT' ),
  2435.     'CAT' => array(
  2436.         'offset' => 7200000,
  2437.         'longname' => "Central African Time",
  2438.         'shortname' => 'CAT',
  2439.         'hasdst' => false ),
  2440.     'EET' => array(
  2441.         'offset' => 7200000,
  2442.         'longname' => "Eastern European Time",
  2443.         'shortname' => 'EET',
  2444.         'hasdst' => true,
  2445.         'dstlongname' => "Eastern European Summer Time",
  2446.         'dstshortname' => 'EEST' ),
  2447.     'Egypt' => array(
  2448.         'offset' => 7200000,
  2449.         'longname' => "Eastern European Time",
  2450.         'shortname' => 'EET',
  2451.         'hasdst' => true,
  2452.         'dstlongname' => "Eastern European Summer Time",
  2453.         'dstshortname' => 'EEST' ),
  2454.     'Etc/GMT-2' => array(
  2455.         'offset' => 7200000,
  2456.         'longname' => "GMT+02:00",
  2457.         'shortname' => 'GMT+02:00',
  2458.         'hasdst' => false ),
  2459.     'Europe/Athens' => array(
  2460.         'offset' => 7200000,
  2461.         'longname' => "Eastern European Time",
  2462.         'shortname' => 'EET',
  2463.         'hasdst' => true,
  2464.         'dstlongname' => "Eastern European Summer Time",
  2465.         'dstshortname' => 'EEST' ),
  2466.     'Europe/Bucharest' => array(
  2467.         'offset' => 7200000,
  2468.         'longname' => "Eastern European Time",
  2469.         'shortname' => 'EET',
  2470.         'hasdst' => true,
  2471.         'dstlongname' => "Eastern European Summer Time",
  2472.         'dstshortname' => 'EEST' ),
  2473.     'Europe/Chisinau' => array(
  2474.         'offset' => 7200000,
  2475.         'longname' => "Eastern European Time",
  2476.         'shortname' => 'EET',
  2477.         'hasdst' => true,
  2478.         'dstlongname' => "Eastern European Summer Time",
  2479.         'dstshortname' => 'EEST' ),
  2480.     'Europe/Helsinki' => array(
  2481.         'offset' => 7200000,
  2482.         'longname' => "Eastern European Time",
  2483.         'shortname' => 'EET',
  2484.         'hasdst' => true,
  2485.         'dstlongname' => "Eastern European Summer Time",
  2486.         'dstshortname' => 'EEST' ),
  2487.     'Europe/Istanbul' => array(
  2488.         'offset' => 7200000,
  2489.         'longname' => "Eastern European Time",
  2490.         'shortname' => 'EET',
  2491.         'hasdst' => true,
  2492.         'dstlongname' => "Eastern European Summer Time",
  2493.         'dstshortname' => 'EEST' ),
  2494.     'Europe/Kaliningrad' => array(
  2495.         'offset' => 7200000,
  2496.         'longname' => "Eastern European Time",
  2497.         'shortname' => 'EET',
  2498.         'hasdst' => true,
  2499.         'dstlongname' => "Eastern European Summer Time",
  2500.         'dstshortname' => 'EEST' ),
  2501.     'Europe/Kiev' => array(
  2502.         'offset' => 7200000,
  2503.         'longname' => "Eastern European Time",
  2504.         'shortname' => 'EET',
  2505.         'hasdst' => true,
  2506.         'dstlongname' => "Eastern European Summer Time",
  2507.         'dstshortname' => 'EEST' ),
  2508.     'Europe/Minsk' => array(
  2509.         'offset' => 7200000,
  2510.         'longname' => "Eastern European Time",
  2511.         'shortname' => 'EET',
  2512.         'hasdst' => true,
  2513.         'dstlongname' => "Eastern European Summer Time",
  2514.         'dstshortname' => 'EEST' ),
  2515.     'Europe/Nicosia' => array(
  2516.         'offset' => 7200000,
  2517.         'longname' => "Eastern European Time",
  2518.         'shortname' => 'EET',
  2519.         'hasdst' => true,
  2520.         'dstlongname' => "Eastern European Summer Time",
  2521.         'dstshortname' => 'EEST' ),
  2522.     'Europe/Riga' => array(
  2523.         'offset' => 7200000,
  2524.         'longname' => "Eastern European Time",
  2525.         'shortname' => 'EET',
  2526.         'hasdst' => true,
  2527.         'dstlongname' => "Eastern European Summer Time",
  2528.         'dstshortname' => 'EEST' ),
  2529.     'Europe/Simferopol' => array(
  2530.         'offset' => 7200000,
  2531.         'longname' => "Eastern European Time",
  2532.         'shortname' => 'EET',
  2533.         'hasdst' => true,
  2534.         'dstlongname' => "Eastern European Summer Time",
  2535.         'dstshortname' => 'EEST' ),
  2536.     'Europe/Sofia' => array(
  2537.         'offset' => 7200000,
  2538.         'longname' => "Eastern European Time",
  2539.         'shortname' => 'EET',
  2540.         'hasdst' => true,
  2541.         'dstlongname' => "Eastern European Summer Time",
  2542.         'dstshortname' => 'EEST' ),
  2543.     'Europe/Tallinn' => array(
  2544.         'offset' => 7200000,
  2545.         'longname' => "Eastern European Time",
  2546.         'shortname' => 'EET',
  2547.         'hasdst' => false ),
  2548.     'Europe/Tiraspol' => array(
  2549.         'offset' => 7200000,
  2550.         'longname' => "Eastern European Time",
  2551.         'shortname' => 'EET',
  2552.         'hasdst' => true,
  2553.         'dstlongname' => "Eastern European Summer Time",
  2554.         'dstshortname' => 'EEST' ),
  2555.     'Europe/Uzhgorod' => array(
  2556.         'offset' => 7200000,
  2557.         'longname' => "Eastern European Time",
  2558.         'shortname' => 'EET',
  2559.         'hasdst' => true,
  2560.         'dstlongname' => "Eastern European Summer Time",
  2561.         'dstshortname' => 'EEST' ),
  2562.     'Europe/Vilnius' => array(
  2563.         'offset' => 7200000,
  2564.         'longname' => "Eastern European Time",
  2565.         'shortname' => 'EET',
  2566.         'hasdst' => false ),
  2567.     'Europe/Zaporozhye' => array(
  2568.         'offset' => 7200000,
  2569.         'longname' => "Eastern European Time",
  2570.         'shortname' => 'EET',
  2571.         'hasdst' => true,
  2572.         'dstlongname' => "Eastern European Summer Time",
  2573.         'dstshortname' => 'EEST' ),
  2574.     'Israel' => array(
  2575.         'offset' => 7200000,
  2576.         'longname' => "Israel Standard Time",
  2577.         'shortname' => 'IST',
  2578.         'hasdst' => true,
  2579.         'dstlongname' => "Israel Daylight Time",
  2580.         'dstshortname' => 'IDT' ),
  2581.     'Libya' => array(
  2582.         'offset' => 7200000,
  2583.         'longname' => "Eastern European Time",
  2584.         'shortname' => 'EET',
  2585.         'hasdst' => false ),
  2586.     'Turkey' => array(
  2587.         'offset' => 7200000,
  2588.         'longname' => "Eastern European Time",
  2589.         'shortname' => 'EET',
  2590.         'hasdst' => true,
  2591.         'dstlongname' => "Eastern European Summer Time",
  2592.         'dstshortname' => 'EEST' ),
  2593.     'Africa/Addis_Ababa' => array(
  2594.         'offset' => 10800000,
  2595.         'longname' => "Eastern African Time",
  2596.         'shortname' => 'EAT',
  2597.         'hasdst' => false ),
  2598.     'Africa/Asmera' => array(
  2599.         'offset' => 10800000,
  2600.         'longname' => "Eastern African Time",
  2601.         'shortname' => 'EAT',
  2602.         'hasdst' => false ),
  2603.     'Africa/Dar_es_Salaam' => array(
  2604.         'offset' => 10800000,
  2605.         'longname' => "Eastern African Time",
  2606.         'shortname' => 'EAT',
  2607.         'hasdst' => false ),
  2608.     'Africa/Djibouti' => array(
  2609.         'offset' => 10800000,
  2610.         'longname' => "Eastern African Time",
  2611.         'shortname' => 'EAT',
  2612.         'hasdst' => false ),
  2613.     'Africa/Kampala' => array(
  2614.         'offset' => 10800000,
  2615.         'longname' => "Eastern African Time",
  2616.         'shortname' => 'EAT',
  2617.         'hasdst' => false ),
  2618.     'Africa/Khartoum' => array(
  2619.         'offset' => 10800000,
  2620.         'longname' => "Eastern African Time",
  2621.         'shortname' => 'EAT',
  2622.         'hasdst' => false ),
  2623.     'Africa/Mogadishu' => array(
  2624.         'offset' => 10800000,
  2625.         'longname' => "Eastern African Time",
  2626.         'shortname' => 'EAT',
  2627.         'hasdst' => false ),
  2628.     'Africa/Nairobi' => array(
  2629.         'offset' => 10800000,
  2630.         'longname' => "Eastern African Time",
  2631.         'shortname' => 'EAT',
  2632.         'hasdst' => false ),
  2633.     'Antarctica/Syowa' => array(
  2634.         'offset' => 10800000,
  2635.         'longname' => "Syowa Time",
  2636.         'shortname' => 'SYOT',
  2637.         'hasdst' => false ),
  2638.     'Asia/Aden' => array(
  2639.         'offset' => 10800000,
  2640.         'longname' => "Arabia Standard Time",
  2641.         'shortname' => 'AST',
  2642.         'hasdst' => false ),
  2643.     'Asia/Baghdad' => array(
  2644.         'offset' => 10800000,
  2645.         'longname' => "Arabia Standard Time",
  2646.         'shortname' => 'AST',
  2647.         'hasdst' => true,
  2648.         'dstlongname' => "Arabia Daylight Time",
  2649.         'dstshortname' => 'ADT' ),
  2650.     'Asia/Bahrain' => array(
  2651.         'offset' => 10800000,
  2652.         'longname' => "Arabia Standard Time",
  2653.         'shortname' => 'AST',
  2654.         'hasdst' => false ),
  2655.     'Asia/Kuwait' => array(
  2656.         'offset' => 10800000,
  2657.         'longname' => "Arabia Standard Time",
  2658.         'shortname' => 'AST',
  2659.         'hasdst' => false ),
  2660.     'Asia/Qatar' => array(
  2661.         'offset' => 10800000,
  2662.         'longname' => "Arabia Standard Time",
  2663.         'shortname' => 'AST',
  2664.         'hasdst' => false ),
  2665.     'Asia/Riyadh' => array(
  2666.         'offset' => 10800000,
  2667.         'longname' => "Arabia Standard Time",
  2668.         'shortname' => 'AST',
  2669.         'hasdst' => false ),
  2670.     'EAT' => array(
  2671.         'offset' => 10800000,
  2672.         'longname' => "Eastern African Time",
  2673.         'shortname' => 'EAT',
  2674.         'hasdst' => false ),
  2675.     'Etc/GMT-3' => array(
  2676.         'offset' => 10800000,
  2677.         'longname' => "GMT+03:00",
  2678.         'shortname' => 'GMT+03:00',
  2679.         'hasdst' => false ),
  2680.     'Europe/Moscow' => array(
  2681.         'offset' => 10800000,
  2682.         'longname' => "Moscow Standard Time",
  2683.         'shortname' => 'MSK',
  2684.         'hasdst' => true,
  2685.         'dstlongname' => "Moscow Daylight Time",
  2686.         'dstshortname' => 'MSD' ),
  2687.     'Indian/Antananarivo' => array(
  2688.         'offset' => 10800000,
  2689.         'longname' => "Eastern African Time",
  2690.         'shortname' => 'EAT',
  2691.         'hasdst' => false ),
  2692.     'Indian/Comoro' => array(
  2693.         'offset' => 10800000,
  2694.         'longname' => "Eastern African Time",
  2695.         'shortname' => 'EAT',
  2696.         'hasdst' => false ),
  2697.     'Indian/Mayotte' => array(
  2698.         'offset' => 10800000,
  2699.         'longname' => "Eastern African Time",
  2700.         'shortname' => 'EAT',
  2701.         'hasdst' => false ),
  2702.     'W-SU' => array(
  2703.         'offset' => 10800000,
  2704.         'longname' => "Moscow Standard Time",
  2705.         'shortname' => 'MSK',
  2706.         'hasdst' => true,
  2707.         'dstlongname' => "Moscow Daylight Time",
  2708.         'dstshortname' => 'MSD' ),
  2709.     'Asia/Riyadh87' => array(
  2710.         'offset' => 11224000,
  2711.         'longname' => "GMT+03:07",
  2712.         'shortname' => 'GMT+03:07',
  2713.         'hasdst' => false ),
  2714.     'Asia/Riyadh88' => array(
  2715.         'offset' => 11224000,
  2716.         'longname' => "GMT+03:07",
  2717.         'shortname' => 'GMT+03:07',
  2718.         'hasdst' => false ),
  2719.     'Asia/Riyadh89' => array(
  2720.         'offset' => 11224000,
  2721.         'longname' => "GMT+03:07",
  2722.         'shortname' => 'GMT+03:07',
  2723.         'hasdst' => false ),
  2724.     'Mideast/Riyadh87' => array(
  2725.         'offset' => 11224000,
  2726.         'longname' => "GMT+03:07",
  2727.         'shortname' => 'GMT+03:07',
  2728.         'hasdst' => false ),
  2729.     'Mideast/Riyadh88' => array(
  2730.         'offset' => 11224000,
  2731.         'longname' => "GMT+03:07",
  2732.         'shortname' => 'GMT+03:07',
  2733.         'hasdst' => false ),
  2734.     'Mideast/Riyadh89' => array(
  2735.         'offset' => 11224000,
  2736.         'longname' => "GMT+03:07",
  2737.         'shortname' => 'GMT+03:07',
  2738.         'hasdst' => false ),
  2739.     'Asia/Tehran' => array(
  2740.         'offset' => 12600000,
  2741.         'longname' => "Iran Time",
  2742.         'shortname' => 'IRT',
  2743.         'hasdst' => true,
  2744.         'dstlongname' => "Iran Sumer Time",
  2745.         'dstshortname' => 'IRST' ),
  2746.     'Iran' => array(
  2747.         'offset' => 12600000,
  2748.         'longname' => "Iran Time",
  2749.         'shortname' => 'IRT',
  2750.         'hasdst' => true,
  2751.         'dstlongname' => "Iran Sumer Time",
  2752.         'dstshortname' => 'IRST' ),
  2753.     'Asia/Aqtau' => array(
  2754.         'offset' => 14400000,
  2755.         'longname' => "Aqtau Time",
  2756.         'shortname' => 'AQTT',
  2757.         'hasdst' => true,
  2758.         'dstlongname' => "Aqtau Summer Time",
  2759.         'dstshortname' => 'AQTST' ),
  2760.     'Asia/Baku' => array(
  2761.         'offset' => 14400000,
  2762.         'longname' => "Azerbaijan Time",
  2763.         'shortname' => 'AZT',
  2764.         'hasdst' => true,
  2765.         'dstlongname' => "Azerbaijan Summer Time",
  2766.         'dstshortname' => 'AZST' ),
  2767.     'Asia/Dubai' => array(
  2768.         'offset' => 14400000,
  2769.         'longname' => "Gulf Standard Time",
  2770.         'shortname' => 'GST',
  2771.         'hasdst' => false ),
  2772.     'Asia/Muscat' => array(
  2773.         'offset' => 14400000,
  2774.         'longname' => "Gulf Standard Time",
  2775.         'shortname' => 'GST',
  2776.         'hasdst' => false ),
  2777.     'Asia/Tbilisi' => array(
  2778.         'offset' => 14400000,
  2779.         'longname' => "Georgia Time",
  2780.         'shortname' => 'GET',
  2781.         'hasdst' => true,
  2782.         'dstlongname' => "Georgia Summer Time",
  2783.         'dstshortname' => 'GEST' ),
  2784.     'Asia/Yerevan' => array(
  2785.         'offset' => 14400000,
  2786.         'longname' => "Armenia Time",
  2787.         'shortname' => 'AMT',
  2788.         'hasdst' => true,
  2789.         'dstlongname' => "Armenia Summer Time",
  2790.         'dstshortname' => 'AMST' ),
  2791.     'Etc/GMT-4' => array(
  2792.         'offset' => 14400000,
  2793.         'longname' => "GMT+04:00",
  2794.         'shortname' => 'GMT+04:00',
  2795.         'hasdst' => false ),
  2796.     'Europe/Samara' => array(
  2797.         'offset' => 14400000,
  2798.         'longname' => "Samara Time",
  2799.         'shortname' => 'SAMT',
  2800.         'hasdst' => true,
  2801.         'dstlongname' => "Samara Summer Time",
  2802.         'dstshortname' => 'SAMST' ),
  2803.     'Indian/Mahe' => array(
  2804.         'offset' => 14400000,
  2805.         'longname' => "Seychelles Time",
  2806.         'shortname' => 'SCT',
  2807.         'hasdst' => false ),
  2808.     'Indian/Mauritius' => array(
  2809.         'offset' => 14400000,
  2810.         'longname' => "Mauritius Time",
  2811.         'shortname' => 'MUT',
  2812.         'hasdst' => false ),
  2813.     'Indian/Reunion' => array(
  2814.         'offset' => 14400000,
  2815.         'longname' => "Reunion Time",
  2816.         'shortname' => 'RET',
  2817.         'hasdst' => false ),
  2818.     'NET' => array(
  2819.         'offset' => 14400000,
  2820.         'longname' => "Armenia Time",
  2821.         'shortname' => 'AMT',
  2822.         'hasdst' => true,
  2823.         'dstlongname' => "Armenia Summer Time",
  2824.         'dstshortname' => 'AMST' ),
  2825.     'Asia/Kabul' => array(
  2826.         'offset' => 16200000,
  2827.         'longname' => "Afghanistan Time",
  2828.         'shortname' => 'AFT',
  2829.         'hasdst' => false ),
  2830.     'Asia/Aqtobe' => array(
  2831.         'offset' => 18000000,
  2832.         'longname' => "Aqtobe Time",
  2833.         'shortname' => 'AQTT',
  2834.         'hasdst' => true,
  2835.         'dstlongname' => "Aqtobe Summer Time",
  2836.         'dstshortname' => 'AQTST' ),
  2837.     'Asia/Ashgabat' => array(
  2838.         'offset' => 18000000,
  2839.         'longname' => "Turkmenistan Time",
  2840.         'shortname' => 'TMT',
  2841.         'hasdst' => false ),
  2842.     'Asia/Ashkhabad' => array(
  2843.         'offset' => 18000000,
  2844.         'longname' => "Turkmenistan Time",
  2845.         'shortname' => 'TMT',
  2846.         'hasdst' => false ),
  2847.     'Asia/Bishkek' => array(
  2848.         'offset' => 18000000,
  2849.         'longname' => "Kirgizstan Time",
  2850.         'shortname' => 'KGT',
  2851.         'hasdst' => true,
  2852.         'dstlongname' => "Kirgizstan Summer Time",
  2853.         'dstshortname' => 'KGST' ),
  2854.     'Asia/Dushanbe' => array(
  2855.         'offset' => 18000000,
  2856.         'longname' => "Tajikistan Time",
  2857.         'shortname' => 'TJT',
  2858.         'hasdst' => false ),
  2859.     'Asia/Karachi' => array(
  2860.         'offset' => 18000000,
  2861.         'longname' => "Pakistan Time",
  2862.         'shortname' => 'PKT',
  2863.         'hasdst' => false ),
  2864.     'Asia/Samarkand' => array(
  2865.         'offset' => 18000000,
  2866.         'longname' => "Turkmenistan Time",
  2867.         'shortname' => 'TMT',
  2868.         'hasdst' => false ),
  2869.     'Asia/Tashkent' => array(
  2870.         'offset' => 18000000,
  2871.         'longname' => "Uzbekistan Time",
  2872.         'shortname' => 'UZT',
  2873.         'hasdst' => false ),
  2874.     'Asia/Yekaterinburg' => array(
  2875.         'offset' => 18000000,
  2876.         'longname' => "Yekaterinburg Time",
  2877.         'shortname' => 'YEKT',
  2878.         'hasdst' => true,
  2879.         'dstlongname' => "Yekaterinburg Summer Time",
  2880.         'dstshortname' => 'YEKST' ),
  2881.     'Etc/GMT-5' => array(
  2882.         'offset' => 18000000,
  2883.         'longname' => "GMT+05:00",
  2884.         'shortname' => 'GMT+05:00',
  2885.         'hasdst' => false ),
  2886.     'Indian/Kerguelen' => array(
  2887.         'offset' => 18000000,
  2888.         'longname' => "French Southern & Antarctic Lands Time",
  2889.         'shortname' => 'TFT',
  2890.         'hasdst' => false ),
  2891.     'Indian/Maldives' => array(
  2892.         'offset' => 18000000,
  2893.         'longname' => "Maldives Time",
  2894.         'shortname' => 'MVT',
  2895.         'hasdst' => false ),
  2896.     'PLT' => array(
  2897.         'offset' => 18000000,
  2898.         'longname' => "Pakistan Time",
  2899.         'shortname' => 'PKT',
  2900.         'hasdst' => false ),
  2901.     'Asia/Calcutta' => array(
  2902.         'offset' => 19800000,
  2903.         'longname' => "India Standard Time",
  2904.         'shortname' => 'IST',
  2905.         'hasdst' => false ),
  2906.     'IST' => array(
  2907.         'offset' => 19800000,
  2908.         'longname' => "India Standard Time",
  2909.         'shortname' => 'IST',
  2910.         'hasdst' => false ),
  2911.     'Asia/Katmandu' => array(
  2912.         'offset' => 20700000,
  2913.         'longname' => "Nepal Time",
  2914.         'shortname' => 'NPT',
  2915.         'hasdst' => false ),
  2916.     'Antarctica/Mawson' => array(
  2917.         'offset' => 21600000,
  2918.         'longname' => "Mawson Time",
  2919.         'shortname' => 'MAWT',
  2920.         'hasdst' => false ),
  2921.     'Antarctica/Vostok' => array(
  2922.         'offset' => 21600000,
  2923.         'longname' => "Vostok time",
  2924.         'shortname' => 'VOST',
  2925.         'hasdst' => false ),
  2926.     'Asia/Almaty' => array(
  2927.         'offset' => 21600000,
  2928.         'longname' => "Alma-Ata Time",
  2929.         'shortname' => 'ALMT',
  2930.         'hasdst' => true,
  2931.         'dstlongname' => "Alma-Ata Summer Time",
  2932.         'dstshortname' => 'ALMST' ),
  2933.     'Asia/Colombo' => array(
  2934.         'offset' => 21600000,
  2935.         'longname' => "Sri Lanka Time",
  2936.         'shortname' => 'LKT',
  2937.         'hasdst' => false ),
  2938.     'Asia/Dacca' => array(
  2939.         'offset' => 21600000,
  2940.         'longname' => "Bangladesh Time",
  2941.         'shortname' => 'BDT',
  2942.         'hasdst' => false ),
  2943.     'Asia/Dhaka' => array(
  2944.         'offset' => 21600000,
  2945.         'longname' => "Bangladesh Time",
  2946.         'shortname' => 'BDT',
  2947.         'hasdst' => false ),
  2948.     'Asia/Novosibirsk' => array(
  2949.         'offset' => 21600000,
  2950.         'longname' => "Novosibirsk Time",
  2951.         'shortname' => 'NOVT',
  2952.         'hasdst' => true,
  2953.         'dstlongname' => "Novosibirsk Summer Time",
  2954.         'dstshortname' => 'NOVST' ),
  2955.     'Asia/Omsk' => array(
  2956.         'offset' => 21600000,
  2957.         'longname' => "Omsk Time",
  2958.         'shortname' => 'OMST',
  2959.         'hasdst' => true,
  2960.         'dstlongname' => "Omsk Summer Time",
  2961.         'dstshortname' => 'OMSST' ),
  2962.     'Asia/Thimbu' => array(
  2963.         'offset' => 21600000,
  2964.         'longname' => "Bhutan Time",
  2965.         'shortname' => 'BTT',
  2966.         'hasdst' => false ),
  2967.     'Asia/Thimphu' => array(
  2968.         'offset' => 21600000,
  2969.         'longname' => "Bhutan Time",
  2970.         'shortname' => 'BTT',
  2971.         'hasdst' => false ),
  2972.     'BST' => array(
  2973.         'offset' => 21600000,
  2974.         'longname' => "Bangladesh Time",
  2975.         'shortname' => 'BDT',
  2976.         'hasdst' => false ),
  2977.     'Etc/GMT-6' => array(
  2978.         'offset' => 21600000,
  2979.         'longname' => "GMT+06:00",
  2980.         'shortname' => 'GMT+06:00',
  2981.         'hasdst' => false ),
  2982.     'Indian/Chagos' => array(
  2983.         'offset' => 21600000,
  2984.         'longname' => "Indian Ocean Territory Time",
  2985.         'shortname' => 'IOT',
  2986.         'hasdst' => false ),
  2987.     'Asia/Rangoon' => array(
  2988.         'offset' => 23400000,
  2989.         'longname' => "Myanmar Time",
  2990.         'shortname' => 'MMT',
  2991.         'hasdst' => false ),
  2992.     'Indian/Cocos' => array(
  2993.         'offset' => 23400000,
  2994.         'longname' => "Cocos Islands Time",
  2995.         'shortname' => 'CCT',
  2996.         'hasdst' => false ),
  2997.     'Antarctica/Davis' => array(
  2998.         'offset' => 25200000,
  2999.         'longname' => "Davis Time",
  3000.         'shortname' => 'DAVT',
  3001.         'hasdst' => false ),
  3002.     'Asia/Bangkok' => array(
  3003.         'offset' => 25200000,
  3004.         'longname' => "Indochina Time",
  3005.         'shortname' => 'ICT',
  3006.         'hasdst' => false ),
  3007.     'Asia/Hovd' => array(
  3008.         'offset' => 25200000,
  3009.         'longname' => "Hovd Time",
  3010.         'shortname' => 'HOVT',
  3011.         'hasdst' => false ),
  3012.     'Asia/Jakarta' => array(
  3013.         'offset' => 25200000,
  3014.         'longname' => "West Indonesia Time",
  3015.         'shortname' => 'WIT',
  3016.         'hasdst' => false ),
  3017.     'Asia/Krasnoyarsk' => array(
  3018.         'offset' => 25200000,
  3019.         'longname' => "Krasnoyarsk Time",
  3020.         'shortname' => 'KRAT',
  3021.         'hasdst' => true,
  3022.         'dstlongname' => "Krasnoyarsk Summer Time",
  3023.         'dstshortname' => 'KRAST' ),
  3024.     'Asia/Phnom_Penh' => array(
  3025.         'offset' => 25200000,
  3026.         'longname' => "Indochina Time",
  3027.         'shortname' => 'ICT',
  3028.         'hasdst' => false ),
  3029.     'Asia/Pontianak' => array(
  3030.         'offset' => 25200000,
  3031.         'longname' => "West Indonesia Time",
  3032.         'shortname' => 'WIT',
  3033.         'hasdst' => false ),
  3034.     'Asia/Saigon' => array(
  3035.         'offset' => 25200000,
  3036.         'longname' => "Indochina Time",
  3037.         'shortname' => 'ICT',
  3038.         'hasdst' => false ),
  3039.     'Asia/Vientiane' => array(
  3040.         'offset' => 25200000,
  3041.         'longname' => "Indochina Time",
  3042.         'shortname' => 'ICT',
  3043.         'hasdst' => false ),
  3044.     'Etc/GMT-7' => array(
  3045.         'offset' => 25200000,
  3046.         'longname' => "GMT+07:00",
  3047.         'shortname' => 'GMT+07:00',
  3048.         'hasdst' => false ),
  3049.     'Indian/Christmas' => array(
  3050.         'offset' => 25200000,
  3051.         'longname' => "Christmas Island Time",
  3052.         'shortname' => 'CXT',
  3053.         'hasdst' => false ),
  3054.     'VST' => array(
  3055.         'offset' => 25200000,
  3056.         'longname' => "Indochina Time",
  3057.         'shortname' => 'ICT',
  3058.         'hasdst' => false ),
  3059.     'Antarctica/Casey' => array(
  3060.         'offset' => 28800000,
  3061.         'longname' => "Western Standard Time (Australia)",
  3062.         'shortname' => 'WST',
  3063.         'hasdst' => false ),
  3064.     'Asia/Brunei' => array(
  3065.         'offset' => 28800000,
  3066.         'longname' => "Brunei Time",
  3067.         'shortname' => 'BNT',
  3068.         'hasdst' => false ),
  3069.     'Asia/Chongqing' => array(
  3070.         'offset' => 28800000,
  3071.         'longname' => "China Standard Time",
  3072.         'shortname' => 'CST',
  3073.         'hasdst' => false ),
  3074.     'Asia/Chungking' => array(
  3075.         'offset' => 28800000,
  3076.         'longname' => "China Standard Time",
  3077.         'shortname' => 'CST',
  3078.         'hasdst' => false ),
  3079.     'Asia/Harbin' => array(
  3080.         'offset' => 28800000,
  3081.         'longname' => "China Standard Time",
  3082.         'shortname' => 'CST',
  3083.         'hasdst' => false ),
  3084.     'Asia/Hong_Kong' => array(
  3085.         'offset' => 28800000,
  3086.         'longname' => "Hong Kong Time",
  3087.         'shortname' => 'HKT',
  3088.         'hasdst' => false ),
  3089.     'Asia/Irkutsk' => array(
  3090.         'offset' => 28800000,
  3091.         'longname' => "Irkutsk Time",
  3092.         'shortname' => 'IRKT',
  3093.         'hasdst' => true,
  3094.         'dstlongname' => "Irkutsk Summer Time",
  3095.         'dstshortname' => 'IRKST' ),
  3096.     'Asia/Kashgar' => array(
  3097.         'offset' => 28800000,
  3098.         'longname' => "China Standard Time",
  3099.         'shortname' => 'CST',
  3100.         'hasdst' => false ),
  3101.     'Asia/Kuala_Lumpur' => array(
  3102.         'offset' => 28800000,
  3103.         'longname' => "Malaysia Time",
  3104.         'shortname' => 'MYT',
  3105.         'hasdst' => false ),
  3106.     'Asia/Kuching' => array(
  3107.         'offset' => 28800000,
  3108.         'longname' => "Malaysia Time",
  3109.         'shortname' => 'MYT',
  3110.         'hasdst' => false ),
  3111.     'Asia/Macao' => array(
  3112.         'offset' => 28800000,
  3113.         'longname' => "China Standard Time",
  3114.         'shortname' => 'CST',
  3115.         'hasdst' => false ),
  3116.     'Asia/Manila' => array(
  3117.         'offset' => 28800000,
  3118.         'longname' => "Philippines Time",
  3119.         'shortname' => 'PHT',
  3120.         'hasdst' => false ),
  3121.     'Asia/Shanghai' => array(
  3122.         'offset' => 28800000,
  3123.         'longname' => "China Standard Time",
  3124.         'shortname' => 'CST',
  3125.         'hasdst' => false ),
  3126.     'Asia/Singapore' => array(
  3127.         'offset' => 28800000,
  3128.         'longname' => "Singapore Time",
  3129.         'shortname' => 'SGT',
  3130.         'hasdst' => false ),
  3131.     'Asia/Taipei' => array(
  3132.         'offset' => 28800000,
  3133.         'longname' => "China Standard Time",
  3134.         'shortname' => 'CST',
  3135.         'hasdst' => false ),
  3136.     'Asia/Ujung_Pandang' => array(
  3137.         'offset' => 28800000,
  3138.         'longname' => "Central Indonesia Time",
  3139.         'shortname' => 'CIT',
  3140.         'hasdst' => false ),
  3141.     'Asia/Ulaanbaatar' => array(
  3142.         'offset' => 28800000,
  3143.         'longname' => "Ulaanbaatar Time",
  3144.         'shortname' => 'ULAT',
  3145.         'hasdst' => false ),
  3146.     'Asia/Ulan_Bator' => array(
  3147.         'offset' => 28800000,
  3148.         'longname' => "Ulaanbaatar Time",
  3149.         'shortname' => 'ULAT',
  3150.         'hasdst' => false ),
  3151.     'Asia/Urumqi' => array(
  3152.         'offset' => 28800000,
  3153.         'longname' => "China Standard Time",
  3154.         'shortname' => 'CST',
  3155.         'hasdst' => false ),
  3156.     'Australia/Perth' => array(
  3157.         'offset' => 28800000,
  3158.         'longname' => "Western Standard Time (Australia)",
  3159.         'shortname' => 'WST',
  3160.         'hasdst' => false ),
  3161.     'Australia/West' => array(
  3162.         'offset' => 28800000,
  3163.         'longname' => "Western Standard Time (Australia)",
  3164.         'shortname' => 'WST',
  3165.         'hasdst' => false ),
  3166.     'CTT' => array(
  3167.         'offset' => 28800000,
  3168.         'longname' => "China Standard Time",
  3169.         'shortname' => 'CST',
  3170.         'hasdst' => false ),
  3171.     'Etc/GMT-8' => array(
  3172.         'offset' => 28800000,
  3173.         'longname' => "GMT+08:00",
  3174.         'shortname' => 'GMT+08:00',
  3175.         'hasdst' => false ),
  3176.     'Hongkong' => array(
  3177.         'offset' => 28800000,
  3178.         'longname' => "Hong Kong Time",
  3179.         'shortname' => 'HKT',
  3180.         'hasdst' => false ),
  3181.     'PRC' => array(
  3182.         'offset' => 28800000,
  3183.         'longname' => "China Standard Time",
  3184.         'shortname' => 'CST',
  3185.         'hasdst' => false ),
  3186.     'Singapore' => array(
  3187.         'offset' => 28800000,
  3188.         'longname' => "Singapore Time",
  3189.         'shortname' => 'SGT',
  3190.         'hasdst' => false ),
  3191.     'Asia/Choibalsan' => array(
  3192.         'offset' => 32400000,
  3193.         'longname' => "Choibalsan Time",
  3194.         'shortname' => 'CHOT',
  3195.         'hasdst' => false ),
  3196.     'Asia/Dili' => array(
  3197.         'offset' => 32400000,
  3198.         'longname' => "East Timor Time",
  3199.         'shortname' => 'TPT',
  3200.         'hasdst' => false ),
  3201.     'Asia/Jayapura' => array(
  3202.         'offset' => 32400000,
  3203.         'longname' => "East Indonesia Time",
  3204.         'shortname' => 'EIT',
  3205.         'hasdst' => false ),
  3206.     'Asia/Pyongyang' => array(
  3207.         'offset' => 32400000,
  3208.         'longname' => "Korea Standard Time",
  3209.         'shortname' => 'KST',
  3210.         'hasdst' => false ),
  3211.     'Asia/Seoul' => array(
  3212.         'offset' => 32400000,
  3213.         'longname' => "Korea Standard Time",
  3214.         'shortname' => 'KST',
  3215.         'hasdst' => false ),
  3216.     'Asia/Tokyo' => array(
  3217.         'offset' => 32400000,
  3218.         'longname' => "Japan Standard Time",
  3219.         'shortname' => 'JST',
  3220.         'hasdst' => false ),
  3221.     'Asia/Yakutsk' => array(
  3222.         'offset' => 32400000,
  3223.         'longname' => "Yakutsk Time",
  3224.         'shortname' => 'YAKT',
  3225.         'hasdst' => true,
  3226.         'dstlongname' => "Yaktsk Summer Time",
  3227.         'dstshortname' => 'YAKST' ),
  3228.     'Etc/GMT-9' => array(
  3229.         'offset' => 32400000,
  3230.         'longname' => "GMT+09:00",
  3231.         'shortname' => 'GMT+09:00',
  3232.         'hasdst' => false ),
  3233.     'JST' => array(
  3234.         'offset' => 32400000,
  3235.         'longname' => "Japan Standard Time",
  3236.         'shortname' => 'JST',
  3237.         'hasdst' => false ),
  3238.     'Japan' => array(
  3239.         'offset' => 32400000,
  3240.         'longname' => "Japan Standard Time",
  3241.         'shortname' => 'JST',
  3242.         'hasdst' => false ),
  3243.     'Pacific/Palau' => array(
  3244.         'offset' => 32400000,
  3245.         'longname' => "Palau Time",
  3246.         'shortname' => 'PWT',
  3247.         'hasdst' => false ),
  3248.     'ROK' => array(
  3249.         'offset' => 32400000,
  3250.         'longname' => "Korea Standard Time",
  3251.         'shortname' => 'KST',
  3252.         'hasdst' => false ),
  3253.     'ACT' => array(
  3254.         'offset' => 34200000,
  3255.         'longname' => "Central Standard Time (Northern Territory)",
  3256.         'shortname' => 'CST',
  3257.         'hasdst' => false ),
  3258.     'Australia/Adelaide' => array(
  3259.         'offset' => 34200000,
  3260.         'longname' => "Central Standard Time (South Australia)",
  3261.         'shortname' => 'CST',
  3262.         'hasdst' => true,
  3263.         'dstlongname' => "Central Summer Time (South Australia)",
  3264.         'dstshortname' => 'CST' ),
  3265.     'Australia/Broken_Hill' => array(
  3266.         'offset' => 34200000,
  3267.         'longname' => "Central Standard Time (South Australia/New South Wales)",
  3268.         'shortname' => 'CST',
  3269.         'hasdst' => true,
  3270.         'dstlongname' => "Central Summer Time (South Australia/New South Wales)",
  3271.         'dstshortname' => 'CST' ),
  3272.     'Australia/Darwin' => array(
  3273.         'offset' => 34200000,
  3274.         'longname' => "Central Standard Time (Northern Territory)",
  3275.         'shortname' => 'CST',
  3276.         'hasdst' => false ),
  3277.     'Australia/North' => array(
  3278.         'offset' => 34200000,
  3279.         'longname' => "Central Standard Time (Northern Territory)",
  3280.         'shortname' => 'CST',
  3281.         'hasdst' => false ),
  3282.     'Australia/South' => array(
  3283.         'offset' => 34200000,
  3284.         'longname' => "Central Standard Time (South Australia)",
  3285.         'shortname' => 'CST',
  3286.         'hasdst' => true,
  3287.         'dstlongname' => "Central Summer Time (South Australia)",
  3288.         'dstshortname' => 'CST' ),
  3289.     'Australia/Yancowinna' => array(
  3290.         'offset' => 34200000,
  3291.         'longname' => "Central Standard Time (South Australia/New South Wales)",
  3292.         'shortname' => 'CST',
  3293.         'hasdst' => true,
  3294.         'dstlongname' => "Central Summer Time (South Australia/New South Wales)",
  3295.         'dstshortname' => 'CST' ),
  3296.     'AET' => array(
  3297.         'offset' => 36000000,
  3298.         'longname' => "Eastern Standard Time (New South Wales)",
  3299.         'shortname' => 'EST',
  3300.         'hasdst' => true,
  3301.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3302.         'dstshortname' => 'EST' ),
  3303.     'Antarctica/DumontDUrville' => array(
  3304.         'offset' => 36000000,
  3305.         'longname' => "Dumont-d'Urville Time",
  3306.         'shortname' => 'DDUT',
  3307.         'hasdst' => false ),
  3308.     'Asia/Sakhalin' => array(
  3309.         'offset' => 36000000,
  3310.         'longname' => "Sakhalin Time",
  3311.         'shortname' => 'SAKT',
  3312.         'hasdst' => true,
  3313.         'dstlongname' => "Sakhalin Summer Time",
  3314.         'dstshortname' => 'SAKST' ),
  3315.     'Asia/Vladivostok' => array(
  3316.         'offset' => 36000000,
  3317.         'longname' => "Vladivostok Time",
  3318.         'shortname' => 'VLAT',
  3319.         'hasdst' => true,
  3320.         'dstlongname' => "Vladivostok Summer Time",
  3321.         'dstshortname' => 'VLAST' ),
  3322.     'Australia/ACT' => array(
  3323.         'offset' => 36000000,
  3324.         'longname' => "Eastern Standard Time (New South Wales)",
  3325.         'shortname' => 'EST',
  3326.         'hasdst' => true,
  3327.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3328.         'dstshortname' => 'EST' ),
  3329.     'Australia/Brisbane' => array(
  3330.         'offset' => 36000000,
  3331.         'longname' => "Eastern Standard Time (Queensland)",
  3332.         'shortname' => 'EST',
  3333.         'hasdst' => false ),
  3334.     'Australia/Canberra' => array(
  3335.         'offset' => 36000000,
  3336.         'longname' => "Eastern Standard Time (New South Wales)",
  3337.         'shortname' => 'EST',
  3338.         'hasdst' => true,
  3339.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3340.         'dstshortname' => 'EST' ),
  3341.     'Australia/Hobart' => array(
  3342.         'offset' => 36000000,
  3343.         'longname' => "Eastern Standard Time (Tasmania)",
  3344.         'shortname' => 'EST',
  3345.         'hasdst' => true,
  3346.         'dstlongname' => "Eastern Summer Time (Tasmania)",
  3347.         'dstshortname' => 'EST' ),
  3348.     'Australia/Lindeman' => array(
  3349.         'offset' => 36000000,
  3350.         'longname' => "Eastern Standard Time (Queensland)",
  3351.         'shortname' => 'EST',
  3352.         'hasdst' => false ),
  3353.     'Australia/Melbourne' => array(
  3354.         'offset' => 36000000,
  3355.         'longname' => "Eastern Standard Time (Victoria)",
  3356.         'shortname' => 'EST',
  3357.         'hasdst' => true,
  3358.         'dstlongname' => "Eastern Summer Time (Victoria)",
  3359.         'dstshortname' => 'EST' ),
  3360.     'Australia/NSW' => array(
  3361.         'offset' => 36000000,
  3362.         'longname' => "Eastern Standard Time (New South Wales)",
  3363.         'shortname' => 'EST',
  3364.         'hasdst' => true,
  3365.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3366.         'dstshortname' => 'EST' ),
  3367.     'Australia/Queensland' => array(
  3368.         'offset' => 36000000,
  3369.         'longname' => "Eastern Standard Time (Queensland)",
  3370.         'shortname' => 'EST',
  3371.         'hasdst' => false ),
  3372.     'Australia/Sydney' => array(
  3373.         'offset' => 36000000,
  3374.         'longname' => "Eastern Standard Time (New South Wales)",
  3375.         'shortname' => 'EST',
  3376.         'hasdst' => true,
  3377.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3378.         'dstshortname' => 'EST' ),
  3379.     'Australia/Tasmania' => array(
  3380.         'offset' => 36000000,
  3381.         'longname' => "Eastern Standard Time (Tasmania)",
  3382.         'shortname' => 'EST',
  3383.         'hasdst' => true,
  3384.         'dstlongname' => "Eastern Summer Time (Tasmania)",
  3385.         'dstshortname' => 'EST' ),
  3386.     'Australia/Victoria' => array(
  3387.         'offset' => 36000000,
  3388.         'longname' => "Eastern Standard Time (Victoria)",
  3389.         'shortname' => 'EST',
  3390.         'hasdst' => true,
  3391.         'dstlongname' => "Eastern Summer Time (Victoria)",
  3392.         'dstshortname' => 'EST' ),
  3393.     'Etc/GMT-10' => array(
  3394.         'offset' => 36000000,
  3395.         'longname' => "GMT+10:00",
  3396.         'shortname' => 'GMT+10:00',
  3397.         'hasdst' => false ),
  3398.     'Pacific/Guam' => array(
  3399.         'offset' => 36000000,
  3400.         'longname' => "Chamorro Standard Time",
  3401.         'shortname' => 'ChST',
  3402.         'hasdst' => false ),
  3403.     'Pacific/Port_Moresby' => array(
  3404.         'offset' => 36000000,
  3405.         'longname' => "Papua New Guinea Time",
  3406.         'shortname' => 'PGT',
  3407.         'hasdst' => false ),
  3408.     'Pacific/Saipan' => array(
  3409.         'offset' => 36000000,
  3410.         'longname' => "Chamorro Standard Time",
  3411.         'shortname' => 'ChST',
  3412.         'hasdst' => false ),
  3413.     'Pacific/Truk' => array(
  3414.         'offset' => 36000000,
  3415.         'longname' => "Truk Time",
  3416.         'shortname' => 'TRUT',
  3417.         'hasdst' => false ),
  3418.     'Pacific/Yap' => array(
  3419.         'offset' => 36000000,
  3420.         'longname' => "Yap Time",
  3421.         'shortname' => 'YAPT',
  3422.         'hasdst' => false ),
  3423.     'Australia/LHI' => array(
  3424.         'offset' => 37800000,
  3425.         'longname' => "Load Howe Standard Time",
  3426.         'shortname' => 'LHST',
  3427.         'hasdst' => true,
  3428.         'dstlongname' => "Load Howe Summer Time",
  3429.         'dstshortname' => 'LHST' ),
  3430.     'Australia/Lord_Howe' => array(
  3431.         'offset' => 37800000,
  3432.         'longname' => "Load Howe Standard Time",
  3433.         'shortname' => 'LHST',
  3434.         'hasdst' => true,
  3435.         'dstlongname' => "Load Howe Summer Time",
  3436.         'dstshortname' => 'LHST' ),
  3437.     'Asia/Magadan' => array(
  3438.         'offset' => 39600000,
  3439.         'longname' => "Magadan Time",
  3440.         'shortname' => 'MAGT',
  3441.         'hasdst' => true,
  3442.         'dstlongname' => "Magadan Summer Time",
  3443.         'dstshortname' => 'MAGST' ),
  3444.     'Etc/GMT-11' => array(
  3445.         'offset' => 39600000,
  3446.         'longname' => "GMT+11:00",
  3447.         'shortname' => 'GMT+11:00',
  3448.         'hasdst' => false ),
  3449.     'Pacific/Efate' => array(
  3450.         'offset' => 39600000,
  3451.         'longname' => "Vanuatu Time",
  3452.         'shortname' => 'VUT',
  3453.         'hasdst' => false ),
  3454.     'Pacific/Guadalcanal' => array(
  3455.         'offset' => 39600000,
  3456.         'longname' => "Solomon Is. Time",
  3457.         'shortname' => 'SBT',
  3458.         'hasdst' => false ),
  3459.     'Pacific/Kosrae' => array(
  3460.         'offset' => 39600000,
  3461.         'longname' => "Kosrae Time",
  3462.         'shortname' => 'KOST',
  3463.         'hasdst' => false ),
  3464.     'Pacific/Noumea' => array(
  3465.         'offset' => 39600000,
  3466.         'longname' => "New Caledonia Time",
  3467.         'shortname' => 'NCT',
  3468.         'hasdst' => false ),
  3469.     'Pacific/Ponape' => array(
  3470.         'offset' => 39600000,
  3471.         'longname' => "Ponape Time",
  3472.         'shortname' => 'PONT',
  3473.         'hasdst' => false ),
  3474.     'SST' => array(
  3475.         'offset' => 39600000,
  3476.         'longname' => "Solomon Is. Time",
  3477.         'shortname' => 'SBT',
  3478.         'hasdst' => false ),
  3479.     'Pacific/Norfolk' => array(
  3480.         'offset' => 41400000,
  3481.         'longname' => "Norfolk Time",
  3482.         'shortname' => 'NFT',
  3483.         'hasdst' => false ),
  3484.     'Antarctica/McMurdo' => array(
  3485.         'offset' => 43200000,
  3486.         'longname' => "New Zealand Standard Time",
  3487.         'shortname' => 'NZST',
  3488.         'hasdst' => true,
  3489.         'dstlongname' => "New Zealand Daylight Time",
  3490.         'dstshortname' => 'NZDT' ),
  3491.     'Antarctica/South_Pole' => array(
  3492.         'offset' => 43200000,
  3493.         'longname' => "New Zealand Standard Time",
  3494.         'shortname' => 'NZST',
  3495.         'hasdst' => true,
  3496.         'dstlongname' => "New Zealand Daylight Time",
  3497.         'dstshortname' => 'NZDT' ),
  3498.     'Asia/Anadyr' => array(
  3499.         'offset' => 43200000,
  3500.         'longname' => "Anadyr Time",
  3501.         'shortname' => 'ANAT',
  3502.         'hasdst' => true,
  3503.         'dstlongname' => "Anadyr Summer Time",
  3504.         'dstshortname' => 'ANAST' ),
  3505.     'Asia/Kamchatka' => array(
  3506.         'offset' => 43200000,
  3507.         'longname' => "Petropavlovsk-Kamchatski Time",
  3508.         'shortname' => 'PETT',
  3509.         'hasdst' => true,
  3510.         'dstlongname' => "Petropavlovsk-Kamchatski Summer Time",
  3511.         'dstshortname' => 'PETST' ),
  3512.     'Etc/GMT-12' => array(
  3513.         'offset' => 43200000,
  3514.         'longname' => "GMT+12:00",
  3515.         'shortname' => 'GMT+12:00',
  3516.         'hasdst' => false ),
  3517.     'Kwajalein' => array(
  3518.         'offset' => 43200000,
  3519.         'longname' => "Marshall Islands Time",
  3520.         'shortname' => 'MHT',
  3521.         'hasdst' => false ),
  3522.     'NST' => array(
  3523.         'offset' => 43200000,
  3524.         'longname' => "New Zealand Standard Time",
  3525.         'shortname' => 'NZST',
  3526.         'hasdst' => true,
  3527.         'dstlongname' => "New Zealand Daylight Time",
  3528.         'dstshortname' => 'NZDT' ),
  3529.     'NZ' => array(
  3530.         'offset' => 43200000,
  3531.         'longname' => "New Zealand Standard Time",
  3532.         'shortname' => 'NZST',
  3533.         'hasdst' => true,
  3534.         'dstlongname' => "New Zealand Daylight Time",
  3535.         'dstshortname' => 'NZDT' ),
  3536.     'Pacific/Auckland' => array(
  3537.         'offset' => 43200000,
  3538.         'longname' => "New Zealand Standard Time",
  3539.         'shortname' => 'NZST',
  3540.         'hasdst' => true,
  3541.         'dstlongname' => "New Zealand Daylight Time",
  3542.         'dstshortname' => 'NZDT' ),
  3543.     'Pacific/Fiji' => array(
  3544.         'offset' => 43200000,
  3545.         'longname' => "Fiji Time",
  3546.         'shortname' => 'FJT',
  3547.         'hasdst' => false ),
  3548.     'Pacific/Funafuti' => array(
  3549.         'offset' => 43200000,
  3550.         'longname' => "Tuvalu Time",
  3551.         'shortname' => 'TVT',
  3552.         'hasdst' => false ),
  3553.     'Pacific/Kwajalein' => array(
  3554.         'offset' => 43200000,
  3555.         'longname' => "Marshall Islands Time",
  3556.         'shortname' => 'MHT',
  3557.         'hasdst' => false ),
  3558.     'Pacific/Majuro' => array(
  3559.         'offset' => 43200000,
  3560.         'longname' => "Marshall Islands Time",
  3561.         'shortname' => 'MHT',
  3562.         'hasdst' => false ),
  3563.     'Pacific/Nauru' => array(
  3564.         'offset' => 43200000,
  3565.         'longname' => "Nauru Time",
  3566.         'shortname' => 'NRT',
  3567.         'hasdst' => false ),
  3568.     'Pacific/Tarawa' => array(
  3569.         'offset' => 43200000,
  3570.         'longname' => "Gilbert Is. Time",
  3571.         'shortname' => 'GILT',
  3572.         'hasdst' => false ),
  3573.     'Pacific/Wake' => array(
  3574.         'offset' => 43200000,
  3575.         'longname' => "Wake Time",
  3576.         'shortname' => 'WAKT',
  3577.         'hasdst' => false ),
  3578.     'Pacific/Wallis' => array(
  3579.         'offset' => 43200000,
  3580.         'longname' => "Wallis & Futuna Time",
  3581.         'shortname' => 'WFT',
  3582.         'hasdst' => false ),
  3583.     'NZ-CHAT' => array(
  3584.         'offset' => 45900000,
  3585.         'longname' => "Chatham Standard Time",
  3586.         'shortname' => 'CHAST',
  3587.         'hasdst' => true,
  3588.         'dstlongname' => "Chatham Daylight Time",
  3589.         'dstshortname' => 'CHADT' ),
  3590.     'Pacific/Chatham' => array(
  3591.         'offset' => 45900000,
  3592.         'longname' => "Chatham Standard Time",
  3593.         'shortname' => 'CHAST',
  3594.         'hasdst' => true,
  3595.         'dstlongname' => "Chatham Daylight Time",
  3596.         'dstshortname' => 'CHADT' ),
  3597.     'Etc/GMT-13' => array(
  3598.         'offset' => 46800000,
  3599.         'longname' => "GMT+13:00",
  3600.         'shortname' => 'GMT+13:00',
  3601.         'hasdst' => false ),
  3602.     'Pacific/Enderbury' => array(
  3603.         'offset' => 46800000,
  3604.         'longname' => "Phoenix Is. Time",
  3605.         'shortname' => 'PHOT',
  3606.         'hasdst' => false ),
  3607.     'Pacific/Tongatapu' => array(
  3608.         'offset' => 46800000,
  3609.         'longname' => "Tonga Time",
  3610.         'shortname' => 'TOT',
  3611.         'hasdst' => false ),
  3612.     'Etc/GMT-14' => array(
  3613.         'offset' => 50400000,
  3614.         'longname' => "GMT+14:00",
  3615.         'shortname' => 'GMT+14:00',
  3616.         'hasdst' => false ),
  3617.     'Pacific/Kiritimati' => array(
  3618.         'offset' => 50400000,
  3619.         'longname' => "Line Is. Time",
  3620.         'shortname' => 'LINT',
  3621.         'hasdst' => false )
  3622. );
  3623.  
  3624. //
  3625. // Initialize default timezone
  3626. //  First try _DATE_TIMEZONE_DEFAULT global,
  3627. //  then PHP_TZ environment var, then TZ environment var
  3628. //
  3629. if(isset($_DATE_TIMEZONE_DEFAULT) 
  3630.     && Date_TimeZone::isValidID($_DATE_TIMEZONE_DEFAULT)
  3631. ) {
  3632.     Date_TimeZone::setDefault($_DATE_TIMEZONE_DEFAULT);
  3633. } elseif (getenv('PHP_TZ') && Date_TimeZone::isValidID(getenv('PHP_TZ'))) {
  3634.     Date_TimeZone::setDefault(getenv('PHP_TZ'));
  3635. } elseif (getenv('TZ') && Date_TimeZone::isValidID(getenv('TZ'))) {
  3636.     Date_TimeZone::setDefault(getenv('TZ'));
  3637. } elseif (Date_TimeZone::isValidID(date('T'))) {
  3638.     Date_TimeZone::setDefault(date('T'));
  3639. } else {
  3640.     Date_TimeZone::setDefault('UTC');
  3641. }
  3642. //
  3643. // END
  3644. ?>