| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com) 7 * @license LGPL http://www.gnu.org/copyleft/lesser.html 8 */ 9 //inspired by PEAR::lmbDate package 10 11 /** 12 * time_zone representation class, along with time zone information data. 13 * 14 * time_zone representation class, along with time zone information data. 15 * The default timezone is set from the first valid timezone id found 16 * in one of the following places, in this order: 17 * 1) global $_DATE_TIMEZONE_DEFAULT 18 * 2) system environment variable PHP_TZ 19 * 3) system environment variable TZ 20 * 4) the result of date('T') 21 * If no valid timezone id is found, the default timezone is set to 'UTC'. 22 * You may also manually set the default timezone by passing a valid id to 23 * date_time_zone::set_default(). 24 * 25 * This class includes time zone data (from zoneinfo) in the form of a global array, $_DATE_TIMEZONE_DATA. 26 * @package datetime 27 * @version $Id: lmbDateTimeZone.class.php 5945 2007-06-06 08:31:43Z pachanga $ 28 */ 29 class lmbDateTimeZone 30 { 31 var $id; 32 var $longname; //Long Name of this time zone (ie Central Standard Time) 33 var $shortname; //Short Name of this time zone (ie CST) 34 var $hasdst; //true if this time zone observes daylight savings time 35 var $dstlongname; //DST Long Name of this time zone 36 var $dstshortname; //DST Short Name of this timezone 37 var $offset; //offset, in milliseconds, of this timezone 38 39 var $default; //System Default Time Zone 40 41 function lmbDateTimeZone($id) 42 { 43 global $_DATE_TIMEZONE_DATA; 44 45 if (lmbDateTimeZone::isValidId($id)) 46 { 47 $this->id = $id; 48 $this->longname = $_DATE_TIMEZONE_DATA[$id]['longname']; 49 $this->shortname = $_DATE_TIMEZONE_DATA[$id]['shortname']; 50 $this->offset = $_DATE_TIMEZONE_DATA[$id]['offset']; 51 52 if ($_DATE_TIMEZONE_DATA[$id]['hasdst']) 53 { 54 $this->hasdst = true; 55 $this->dstlongname = $_DATE_TIMEZONE_DATA[$id]['dstlongname']; 56 $this->dstshortname = $_DATE_TIMEZONE_DATA[$id]['dstshortname']; 57 } 58 else 59 { 60 $this->hasdst = false; 61 $this->dstlongname = $this->longname; 62 $this->dstshortname = $this->shortname; 63 } 64 } 65 else 66 { 67 $this->id = 'UTC'; 68 $this->longname = $_DATE_TIMEZONE_DATA[$this->id]['longname']; 69 $this->shortname = $_DATE_TIMEZONE_DATA[$this->id]['shortname']; 70 $this->dstlongname = $this->longname; 71 $this->dstshortname = $this->shortname; 72 $this->hasdst = $_DATE_TIMEZONE_DATA[$this->id]['hasdst']; 73 $this->offset = $_DATE_TIMEZONE_DATA[$this->id]['offset']; 74 } 75 } 76 77 function getDefault() 78 { 79 global $_DATE_TIMEZONE_DEFAULT; 80 return new lmbDateTimeZone($_DATE_TIMEZONE_DEFAULT); 81 } 82 83 function setDefault($id) 84 { 85 global $_DATE_TIMEZONE_DEFAULT; 86 if (lmbDateTimeZone::isValidId($id)) 87 $_DATE_TIMEZONE_DEFAULT = $id; 88 } 89 90 function isValidId($id) 91 { 92 global $_DATE_TIMEZONE_DATA; 93 if (isset($_DATE_TIMEZONE_DATA[$id])) 94 return true; 95 else 96 return false; 97 } 98 99 /** 100 * Is this time zone equal to another 101 */ 102 function isEqual($tz) 103 { 104 if (strcasecmp($this->id, $tz->getId()) == 0) 105 return true; 106 else 107 return false; 108 } 109 110 /** 111 * Is this time zone equivalent to another 112 * 113 * Tests to see if this time zone is equivalent to 114 * a given time zone object. Equivalence in this context 115 * is defined by the two time zones having an equal raw 116 * offset and an equal setting of "hasdst". This is not true 117 * equivalence, as the two time zones may have different rules 118 * for the observance of DST, but this implementation does not 119 * know DST rules. 120 */ 121 function isEquivalent($tz) 122 { 123 if ($this->offset == $tz->getRawOffset() && $this->hasdst == $tz->hasDaylightTime()) 124 return true; 125 else 126 return false; 127 } 128 129 /** 130 * Returns true if this zone observes daylight savings time 131 */ 132 function hasDaylightTime() 133 { 134 return $this->hasdst; 135 } 136 137 /** 138 * Is the given date/time in DST for this time zone 139 * 140 * Attempts to determine if a given date object represents a date/time 141 * that is in DST for this time zone. WARNINGS: this basically attempts to 142 * "trick" the system into telling us if we're in DST for a given time zone. 143 * This uses putenv() which may not work in safe mode, and relies on unix time 144 * which is only valid for dates from 1970 to ~2038. This relies on the 145 * underlying OS calls, so it may not work on Windows or on a system where 146 * zoneinfo is not installed or configured properly. 147 */ 148 function inDaylightTime($date) 149 { 150 $env_tz = ''; 151 if (getenv('TZ')) 152 $env_tz = getenv('TZ'); 153 154 if($this->id) 155 putenv('TZ=' . $this->id); 156 $ltime = localtime($date->getStamp(), true); 157 158 if($env_tz) 159 putenv('TZ=' . $env_tz); 160 161 return $ltime['tm_isdst']; 162 } 163 164 /** 165 * Get the DST offset for this time zone 166 * 167 * Returns the DST offset of this time zone, in milliseconds, 168 * if the zone observes DST, zero otherwise. Currently the 169 * DST offset is hard-coded to one hour. 170 */ 171 function getDSTSavings() 172 { 173 if ($this->hasdst) 174 return 3600000; 175 else 176 return 0; 177 } 178 179 /** 180 * Get the DST-corrected offset to UTC for the given date 181 * 182 * Attempts to get the offset to UTC for a given date/time, taking into 183 * account daylight savings time, if the time zone observes it and if 184 * it is in effect. Please see the WARNINGS on date_time_zone::in_daylight_time(). 185 */ 186 function getOffset($date) 187 { 188 if ($this->inDaylightTime($date)) 189 return $this->offset + $this->getDSTSavings(); 190 else 191 return $this->offset; 192 } 193 194 /** 195 * Returns the list of valid time zone id strings 196 */ 197 function getAvailableIds() 198 { 199 global $_DATE_TIMEZONE_DATA; 200 return array_keys($_DATE_TIMEZONE_DATA); 201 } 202 203 /** 204 * Returns the time zone id for this time zone, i.e. "America/Chicago" 205 */ 206 function getId() 207 { 208 return $this->id; 209 } 210 211 /** 212 * Returns the long name for this time zone, 213 * i.e. "Central Standard Time" 214 */ 215 function getLongName() 216 { 217 return $this->longname; 218 } 219 220 /** 221 * Returns the short name for this time zone, i.e. "CST" 222 */ 223 function getShortName() 224 { 225 return $this->shortname; 226 } 227 228 /** 229 * Returns the DST long name for this time zone, i.e. "Central Daylight Time" 230 */ 231 function getDSTLongName() 232 { 233 return $this->dstlongname; 234 } 235 236 /** 237 * Returns the DST short name for this time zone, i.e. "CDT" 238 */ 239 function getDSTShortName() 240 { 241 return $this->dstshortname; 242 } 243 244 /** 245 * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone 246 */ 247 function getRawOffset() 248 { 249 return $this->offset; 250 } 251 } 252 253 $GLOBALS['_DATE_TIMEZONE_DATA'] = array( 254 'Etc/GMT+12' => array( 255 'offset' => -43200000, 256 'longname' => "GMT-12:00", 257 'shortname' => 'GMT-12:00', 258 'hasdst' => false ), 259 'Etc/GMT+11' => array( 260 'offset' => -39600000, 261 'longname' => "GMT-11:00", 262 'shortname' => 'GMT-11:00', 263 'hasdst' => false ), 264 'MIT' => array( 265 'offset' => -39600000, 266 'longname' => "West Samoa Time", 267 'shortname' => 'WST', 268 'hasdst' => false ), 269 'Pacific/Apia' => array( 270 'offset' => -39600000, 271 'longname' => "West Samoa Time", 272 'shortname' => 'WST', 273 'hasdst' => false ), 274 'Pacific/Midway' => array( 275 'offset' => -39600000, 276 'longname' => "Samoa Standard Time", 277 'shortname' => 'SST', 278 'hasdst' => false ), 279 'Pacific/Niue' => array( 280 'offset' => -39600000, 281 'longname' => "Niue Time", 282 'shortname' => 'NUT', 283 'hasdst' => false ), 284 'Pacific/Pago_Pago' => array( 285 'offset' => -39600000, 286 'longname' => "Samoa Standard Time", 287 'shortname' => 'SST', 288 'hasdst' => false ), 289 'Pacific/Samoa' => array( 290 'offset' => -39600000, 291 'longname' => "Samoa Standard Time", 292 'shortname' => 'SST', 293 'hasdst' => false ), 294 'US/Samoa' => array( 295 'offset' => -39600000, 296 'longname' => "Samoa Standard Time", 297 'shortname' => 'SST', 298 'hasdst' => false ), 299 'America/Adak' => array( 300 'offset' => -36000000, 301 'longname' => "Hawaii-Aleutian Standard Time", 302 'shortname' => 'HAST', 303 'hasdst' => true, 304 'dstlongname' => "Hawaii-Aleutian Daylight Time", 305 'dstshortname' => 'HADT' ), 306 'America/Atka' => array( 307 'offset' => -36000000, 308 'longname' => "Hawaii-Aleutian Standard Time", 309 'shortname' => 'HAST', 310 'hasdst' => true, 311 'dstlongname' => "Hawaii-Aleutian Daylight Time", 312 'dstshortname' => 'HADT' ), 313 'Etc/GMT+10' => array( 314 'offset' => -36000000, 315 'longname' => "GMT-10:00", 316 'shortname' => 'GMT-10:00', 317 'hasdst' => false ), 318 'HST' => array( 319 'offset' => -36000000, 320 'longname' => "Hawaii Standard Time", 321 'shortname' => 'HST', 322 'hasdst' => false ), 323 'Pacific/Fakaofo' => array( 324 'offset' => -36000000, 325 'longname' => "Tokelau Time", 326 'shortname' => 'TKT', 327 'hasdst' => false ), 328 'Pacific/Honolulu' => array( 329 'offset' => -36000000, 330 'longname' => "Hawaii Standard Time", 331 'shortname' => 'HST', 332 'hasdst' => false ), 333 'Pacific/Johnston' => array( 334 'offset' => -36000000, 335 'longname' => "Hawaii Standard Time", 336 'shortname' => 'HST', 337 'hasdst' => false ), 338 'Pacific/Rarotonga' => array( 339 'offset' => -36000000, 340 'longname' => "Cook Is. Time", 341 'shortname' => 'CKT', 342 'hasdst' => false ), 343 'Pacific/Tahiti' => array( 344 'offset' => -36000000, 345 'longname' => "Tahiti Time", 346 'shortname' => 'TAHT', 347 'hasdst' => false ), 348 'SystemV/HST10' => array( 349 'offset' => -36000000, 350 'longname' => "Hawaii Standard Time", 351 'shortname' => 'HST', 352 'hasdst' => false ), 353 'US/Aleutian' => array( 354 'offset' => -36000000, 355 'longname' => "Hawaii-Aleutian Standard Time", 356 'shortname' => 'HAST', 357 'hasdst' => true, 358 'dstlongname' => "Hawaii-Aleutian Daylight Time", 359 'dstshortname' => 'HADT' ), 360 'US/Hawaii' => array( 361 'offset' => -36000000, 362 'longname' => "Hawaii Standard Time", 363 'shortname' => 'HST', 364 'hasdst' => false ), 365 'Pacific/Marquesas' => array( 366 'offset' => -34200000, 367 'longname' => "Marquesas Time", 368 'shortname' => 'MART', 369 'hasdst' => false ), 370 'AST' => array( 371 'offset' => -32400000, 372 'longname' => "Alaska Standard Time", 373 'shortname' => 'AKST', 374 'hasdst' => true, 375 'dstlongname' => "Alaska Daylight Time", 376 'dstshortname' => 'AKDT' ), 377 'America/Anchorage' => array( 378 'offset' => -32400000, 379 'longname' => "Alaska Standard Time", 380 'shortname' => 'AKST', 381 'hasdst' => true, 382 'dstlongname' => "Alaska Daylight Time", 383 'dstshortname' => 'AKDT' ), 384 'America/Juneau' => array( 385 'offset' => -32400000, 386 'longname' => "Alaska Standard Time", 387 'shortname' => 'AKST', 388 'hasdst' => true, 389 'dstlongname' => "Alaska Daylight Time", 390 'dstshortname' => 'AKDT' ), 391 'America/Nome' => array( 392 'offset' => -32400000, 393 'longname' => "Alaska Standard Time", 394 'shortname' => 'AKST', 395 'hasdst' => true, 396 'dstlongname' => "Alaska Daylight Time", 397 'dstshortname' => 'AKDT' ), 398 'America/Yakutat' => array( 399 'offset' => -32400000, 400 'longname' => "Alaska Standard Time", 401 'shortname' => 'AKST', 402 'hasdst' => true, 403 'dstlongname' => "Alaska Daylight Time", 404 'dstshortname' => 'AKDT' ), 405 'Etc/GMT+9' => array( 406 'offset' => -32400000, 407 'longname' => "GMT-09:00", 408 'shortname' => 'GMT-09:00', 409 'hasdst' => false ), 410 'Pacific/Gambier' => array( 411 'offset' => -32400000, 412 'longname' => "Gambier Time", 413 'shortname' => 'GAMT', 414 'hasdst' => false ), 415 'SystemV/YST9' => array( 416 'offset' => -32400000, 417 'longname' => "Gambier Time", 418 'shortname' => 'GAMT', 419 'hasdst' => false ), 420 'SystemV/YST9YDT' => array( 421 'offset' => -32400000, 422 'longname' => "Alaska Standard Time", 423 'shortname' => 'AKST', 424 'hasdst' => true, 425 'dstlongname' => "Alaska Daylight Time", 426 'dstshortname' => 'AKDT' ), 427 'US/Alaska' => array( 428 'offset' => -32400000, 429 'longname' => "Alaska Standard Time", 430 'shortname' => 'AKST', 431 'hasdst' => true, 432 'dstlongname' => "Alaska Daylight Time", 433 'dstshortname' => 'AKDT' ), 434 'America/Dawson' => array( 435 'offset' => -28800000, 436 'longname' => "Pacific Standard Time", 437 'shortname' => 'PST', 438 'hasdst' => true, 439 'dstlongname' => "Pacific Daylight Time", 440 'dstshortname' => 'PDT' ), 441 'America/Ensenada' => array( 442 'offset' => -28800000, 443 'longname' => "Pacific Standard Time", 444 'shortname' => 'PST', 445 'hasdst' => true, 446 'dstlongname' => "Pacific Daylight Time", 447 'dstshortname' => 'PDT' ), 448 'America/Los_Angeles' => array( 449 'offset' => -28800000, 450 'longname' => "Pacific Standard Time", 451 'shortname' => 'PST', 452 'hasdst' => true, 453 'dstlongname' => "Pacific Daylight Time", 454 'dstshortname' => 'PDT' ), 455 'America/Tijuana' => array( 456 'offset' => -28800000, 457 'longname' => "Pacific Standard Time", 458 'shortname' => 'PST', 459 'hasdst' => true, 460 'dstlongname' => "Pacific Daylight Time", 461 'dstshortname' => 'PDT' ), 462 'America/Vancouver' => array( 463 'offset' => -28800000, 464 'longname' => "Pacific Standard Time", 465 'shortname' => 'PST', 466 'hasdst' => true, 467 'dstlongname' => "Pacific Daylight Time", 468 'dstshortname' => 'PDT' ), 469 'America/Whitehorse' => array( 470 'offset' => -28800000, 471 'longname' => "Pacific Standard Time", 472 'shortname' => 'PST', 473 'hasdst' => true, 474 'dstlongname' => "Pacific Daylight Time", 475 'dstshortname' => 'PDT' ), 476 'Canada/Pacific' => array( 477 'offset' => -28800000, 478 'longname' => "Pacific Standard Time", 479 'shortname' => 'PST', 480 'hasdst' => true, 481 'dstlongname' => "Pacific Daylight Time", 482 'dstshortname' => 'PDT' ), 483 'Canada/Yukon' => array( 484 'offset' => -28800000, 485 'longname' => "Pacific Standard Time", 486 'shortname' => 'PST', 487 'hasdst' => true, 488 'dstlongname' => "Pacific Daylight Time", 489 'dstshortname' => 'PDT' ), 490 'Etc/GMT+8' => array( 491 'offset' => -28800000, 492 'longname' => "GMT-08:00", 493 'shortname' => 'GMT-08:00', 494 'hasdst' => false ), 495 'Mexico/BajaNorte' => array( 496 'offset' => -28800000, 497 'longname' => "Pacific Standard Time", 498 'shortname' => 'PST', 499 'hasdst' => true, 500 'dstlongname' => "Pacific Daylight Time", 501 'dstshortname' => 'PDT' ), 502 'PST' => array( 503 'offset' => -28800000, 504 'longname' => "Pacific Standard Time", 505 'shortname' => 'PST', 506 'hasdst' => true, 507 'dstlongname' => "Pacific Daylight Time", 508 'dstshortname' => 'PDT' ), 509 'PST8PDT' => array( 510 'offset' => -28800000, 511 'longname' => "Pacific Standard Time", 512 'shortname' => 'PST', 513 'hasdst' => true, 514 'dstlongname' => "Pacific Daylight Time", 515 'dstshortname' => 'PDT' ), 516 'Pacific/Pitcairn' => array( 517 'offset' => -28800000, 518 'longname' => "Pitcairn Standard Time", 519 'shortname' => 'PST', 520 'hasdst' => false ), 521 'SystemV/PST8' => array( 522 'offset' => -28800000, 523 'longname' => "Pitcairn Standard Time", 524 'shortname' => 'PST', 525 'hasdst' => false ), 526 'SystemV/PST8PDT' => array( 527 'offset' => -28800000, 528 'longname' => "Pacific Standard Time", 529 'shortname' => 'PST', 530 'hasdst' => true, 531 'dstlongname' => "Pacific Daylight Time", 532 'dstshortname' => 'PDT' ), 533 'US/Pacific' => array( 534 'offset' => -28800000, 535 'longname' => "Pacific Standard Time", 536 'shortname' => 'PST', 537 'hasdst' => true, 538 'dstlongname' => "Pacific Daylight Time", 539 'dstshortname' => 'PDT' ), 540 'US/Pacific-New' => array( 541 'offset' => -28800000, 542 'longname' => "Pacific Standard Time", 543 'shortname' => 'PST', 544 'hasdst' => true, 545 'dstlongname' => "Pacific Daylight Time", 546 'dstshortname' => 'PDT' ), 547 'America/Boise' => array( 548 'offset' => -25200000, 549 'longname' => "Mountain Standard Time", 550 'shortname' => 'MST', 551 'hasdst' => true, 552 'dstlongname' => "Mountain Daylight Time", 553 'dstshortname' => 'MDT' ), 554 'America/Cambridge_Bay' => array( 555 'offset' => -25200000, 556 'longname' => "Mountain Standard Time", 557 'shortname' => 'MST', 558 'hasdst' => true, 559 'dstlongname' => "Mountain Daylight Time", 560 'dstshortname' => 'MDT' ), 561 'America/Chihuahua' => array( 562 'offset' => -25200000, 563 'longname' => "Mountain Standard Time", 564 'shortname' => 'MST', 565 'hasdst' => true, 566 'dstlongname' => "Mountain Daylight Time", 567 'dstshortname' => 'MDT' ), 568 'America/Dawson_Creek' => array( 569 'offset' => -25200000, 570 'longname' => "Mountain Standard Time", 571 'shortname' => 'MST', 572 'hasdst' => false ), 573 'America/Denver' => array( 574 'offset' => -25200000, 575 'longname' => "Mountain Standard Time", 576 'shortname' => 'MST', 577 'hasdst' => true, 578 'dstlongname' => "Mountain Daylight Time", 579 'dstshortname' => 'MDT' ), 580 'America/Edmonton' => array( 581 'offset' => -25200000, 582 'longname' => "Mountain Standard Time", 583 'shortname' => 'MST', 584 'hasdst' => true, 585 'dstlongname' => "Mountain Daylight Time", 586 'dstshortname' => 'MDT' ), 587 'America/Hermosillo' => array( 588 'offset' => -25200000, 589 'longname' => "Mountain Standard Time", 590 'shortname' => 'MST', 591 'hasdst' => false ), 592 'America/Inuvik' => array( 593 'offset' => -25200000, 594 'longname' => "Mountain Standard Time", 595 'shortname' => 'MST', 596 'hasdst' => true, 597 'dstlongname' => "Mountain Daylight Time", 598 'dstshortname' => 'MDT' ), 599 'America/Mazatlan' => array( 600 'offset' => -25200000, 601 'longname' => "Mountain Standard Time", 602 'shortname' => 'MST', 603 'hasdst' => true, 604 'dstlongname' => "Mountain Daylight Time", 605 'dstshortname' => 'MDT' ), 606 'America/Phoenix' => array( 607 'offset' => -25200000, 608 'longname' => "Mountain Standard Time", 609 'shortname' => 'MST', 610 'hasdst' => false ), 611 'America/Shiprock' => array( 612 'offset' => -25200000, 613 'longname' => "Mountain Standard Time", 614 'shortname' => 'MST', 615 'hasdst' => true, 616 'dstlongname' => "Mountain Daylight Time", 617 'dstshortname' => 'MDT' ), 618 'America/Yellowknife' => array( 619 'offset' => -25200000, 620 'longname' => "Mountain Standard Time", 621 'shortname' => 'MST', 622 'hasdst' => true, 623 'dstlongname' => "Mountain Daylight Time", 624 'dstshortname' => 'MDT' ), 625 'Canada/Mountain' => array( 626 'offset' => -25200000, 627 'longname' => "Mountain Standard Time", 628 'shortname' => 'MST', 629 'hasdst' => true, 630 'dstlongname' => "Mountain Daylight Time", 631 'dstshortname' => 'MDT' ), 632 'Etc/GMT+7' => array( 633 'offset' => -25200000, 634 'longname' => "GMT-07:00", 635 'shortname' => 'GMT-07:00', 636 'hasdst' => false ), 637 'MST' => array( 638 'offset' => -25200000, 639 'longname' => "Mountain Standard Time", 640 'shortname' => 'MST', 641 'hasdst' => true, 642 'dstlongname' => "Mountain Daylight Time", 643 'dstshortname' => 'MDT' ), 644 'MST7MDT' => array( 645 'offset' => -25200000, 646 'longname' => "Mountain Standard Time", 647 'shortname' => 'MST', 648 'hasdst' => true, 649 'dstlongname' => "Mountain Daylight Time", 650 'dstshortname' => 'MDT' ), 651 'Mexico/BajaSur' => array( 652 'offset' => -25200000, 653 'longname' => "Mountain Standard Time", 654 'shortname' => 'MST', 655 'hasdst' => true, 656 'dstlongname' => "Mountain Daylight Time", 657 'dstshortname' => 'MDT' ), 658 'Navajo' => array( 659 'offset' => -25200000, 660 'longname' => "Mountain Standard Time", 661 'shortname' => 'MST', 662 'hasdst' => true, 663 'dstlongname' => "Mountain Daylight Time", 664 'dstshortname' => 'MDT' ), 665 'PNT' => array( 666 'offset' => -25200000, 667 'longname' => "Mountain Standard Time", 668 'shortname' => 'MST', 669 'hasdst' => false ), 670 'SystemV/MST7' => array( 671 'offset' => -25200000, 672 'longname' => "Mountain Standard Time", 673 'shortname' => 'MST', 674 'hasdst' => false ), 675 'SystemV/MST7MDT' => array( 676 'offset' => -25200000, 677 'longname' => "Mountain Standard Time", 678 'shortname' => 'MST', 679 'hasdst' => true, 680 'dstlongname' => "Mountain Daylight Time", 681 'dstshortname' => 'MDT' ), 682 'US/Arizona' => array( 683 'offset' => -25200000, 684 'longname' => "Mountain Standard Time", 685 'shortname' => 'MST', 686 'hasdst' => false ), 687 'US/Mountain' => array( 688 'offset' => -25200000, 689 'longname' => "Mountain Standard Time", 690 'shortname' => 'MST', 691 'hasdst' => true, 692 'dstlongname' => "Mountain Daylight Time", 693 'dstshortname' => 'MDT' ), 694 'America/Belize' => array( 695 'offset' => -21600000, 696 'longname' => "Central Standard Time", 697 'shortname' => 'CST', 698 'hasdst' => false ), 699 'America/Cancun' => array( 700 'offset' => -21600000, 701 'longname' => "Central Standard Time", 702 'shortname' => 'CST', 703 'hasdst' => true, 704 'dstlongname' => "Central Daylight Time", 705 'dstshortname' => 'CDT' ), 706 'America/Chicago' => array( 707 'offset' => -21600000, 708 'longname' => "Central Standard Time", 709 'shortname' => 'CST', 710 'hasdst' => true, 711 'dstlongname' => "Central Daylight Time", 712 'dstshortname' => 'CDT' ), 713 'America/Costa_Rica' => array( 714 'offset' => -21600000, 715 'longname' => "Central Standard Time", 716 'shortname' => 'CST', 717 'hasdst' => false ), 718 'America/El_Salvador' => array( 719 'offset' => -21600000, 720 'longname' => "Central Standard Time", 721 'shortname' => 'CST', 722 'hasdst' => false ), 723 'America/Guatemala' => array( 724 'offset' => -21600000, 725 'longname' => "Central Standard Time", 726 'shortname' => 'CST', 727 'hasdst' => false ), 728 'America/Managua' => array( 729 'offset' => -21600000, 730 'longname' => "Central Standard Time", 731 'shortname' => 'CST', 732 'hasdst' => false ), 733 'America/Menominee' => array( 734 'offset' => -21600000, 735 'longname' => "Central Standard Time", 736 'shortname' => 'CST', 737 'hasdst' => true, 738 'dstlongname' => "Central Daylight Time", 739 'dstshortname' => 'CDT' ), 740 'America/Merida' => array( 741 'offset' => -21600000, 742 'longname' => "Central Standard Time", 743 'shortname' => 'CST', 744 'hasdst' => true, 745 'dstlongname' => "Central Daylight Time", 746 'dstshortname' => 'CDT' ), 747 'America/Mexico_City' => array( 748 'offset' => -21600000, 749 'longname' => "Central Standard Time", 750 'shortname' => 'CST', 751 'hasdst' => false ), 752 'America/Monterrey' => array( 753 'offset' => -21600000, 754 'longname' => "Central Standard Time", 755 'shortname' => 'CST', 756 'hasdst' => true, 757 'dstlongname' => "Central Daylight Time", 758 'dstshortname' => 'CDT' ), 759 'America/North_Dakota/Center' => array( 760 'offset' => -21600000, 761 'longname' => "Central Standard Time", 762 'shortname' => 'CST', 763 'hasdst' => true, 764 'dstlongname' => "Central Daylight Time", 765 'dstshortname' => 'CDT' ), 766 'America/Rainy_River' => array( 767 'offset' => -21600000, 768 'longname' => "Central Standard Time", 769 'shortname' => 'CST', 770 'hasdst' => true, 771 'dstlongname' => "Central Daylight Time", 772 'dstshortname' => 'CDT' ), 773 'America/Rankin_Inlet' => array( 774 'offset' => -21600000, 775 'longname' => "Eastern Standard Time", 776 'shortname' => 'EST', 777 'hasdst' => true, 778 'dstlongname' => "Eastern Daylight Time", 779 'dstshortname' => 'EDT' ), 780 'America/Regina' => array( 781 'offset' => -21600000, 782 'longname' => "Central Standard Time", 783 'shortname' => 'CST', 784 'hasdst' => false ), 785 'America/Swift_Current' => array( 786 'offset' => -21600000, 787 'longname' => "Central Standard Time", 788 'shortname' => 'CST', 789 'hasdst' => false ), 790 'America/Tegucigalpa' => array( 791 'offset' => -21600000, 792 'longname' => "Central Standard Time", 793 'shortname' => 'CST', 794 'hasdst' => false ), 795 'America/Winnipeg' => array( 796 'offset' => -21600000, 797 'longname' => "Central Standard Time", 798 'shortname' => 'CST', 799 'hasdst' => true, 800 'dstlongname' => "Central Daylight Time", 801 'dstshortname' => 'CDT' ), 802 'CST' => array( 803 'offset' => -21600000, 804 'longname' => "Central Standard Time", 805 'shortname' => 'CST', 806 'hasdst' => true, 807 'dstlongname' => "Central Daylight Time", 808 'dstshortname' => 'CDT' ), 809 'CST6CDT' => array( 810 'offset' => -21600000, 811 'longname' => "Central Standard Time", 812 'shortname' => 'CST', 813 'hasdst' => true, 814 'dstlongname' => "Central Daylight Time", 815 'dstshortname' => 'CDT' ), 816 'Canada/Central' => array( 817 'offset' => -21600000, 818 'longname' => "Central Standard Time", 819 'shortname' => 'CST', 820 'hasdst' => true, 821 'dstlongname' => "Central Daylight Time", 822 'dstshortname' => 'CDT' ), 823 'Canada/East-Saskatchewan' => array( 824 'offset' => -21600000, 825 'longname' => "Central Standard Time", 826 'shortname' => 'CST', 827 'hasdst' => false ), 828 'Canada/Saskatchewan' => array( 829 'offset' => -21600000, 830 'longname' => "Central Standard Time", 831 'shortname' => 'CST', 832 'hasdst' => false ), 833 'Chile/EasterIsland' => array( 834 'offset' => -21600000, 835 'longname' => "Easter Is. Time", 836 'shortname' => 'EAST', 837 'hasdst' => true, 838 'dstlongname' => "Easter Is. Summer Time", 839 'dstshortname' => 'EASST' ), 840 'Etc/GMT+6' => array( 841 'offset' => -21600000, 842 'longname' => "GMT-06:00", 843 'shortname' => 'GMT-06:00', 844 'hasdst' => false ), 845 'Mexico/General' => array( 846 'offset' => -21600000, 847 'longname' => "Central Standard Time", 848 'shortname' => 'CST', 849 'hasdst' => false ), 850 'Pacific/Easter' => array( 851 'offset' => -21600000, 852 'longname' => "Easter Is. Time", 853 'shortname' => 'EAST', 854 'hasdst' => true, 855 'dstlongname' => "Easter Is. Summer Time", 856 'dstshortname' => 'EASST' ), 857 'Pacific/Galapagos' => array( 858 'offset' => -21600000, 859 'longname' => "Galapagos Time", 860 'shortname' => 'GALT', 861 'hasdst' => false ), 862 'SystemV/CST6' => array( 863 'offset' => -21600000, 864 'longname' => "Central Standard Time", 865 'shortname' => 'CST', 866 'hasdst' => false ), 867 'SystemV/CST6CDT' => array( 868 'offset' => -21600000, 869 'longname' => "Central Standard Time", 870 'shortname' => 'CST', 871 'hasdst' => true, 872 'dstlongname' => "Central Daylight Time", 873 'dstshortname' => 'CDT' ), 874 'US/Central' => array( 875 'offset' => -21600000, 876 'longname' => "Central Standard Time", 877 'shortname' => 'CST', 878 'hasdst' => true, 879 'dstlongname' => "Central Daylight Time", 880 'dstshortname' => 'CDT' ), 881 'America/Bogota' => array( 882 'offset' => -18000000, 883 'longname' => "Colombia Time", 884 'shortname' => 'COT', 885 'hasdst' => false ), 886 'America/Cayman' => array( 887 'offset' => -18000000, 888 'longname' => "Eastern Standard Time", 889 'shortname' => 'EST', 890 'hasdst' => false ), 891 'America/Detroit' => array( 892 'offset' => -18000000, 893 'longname' => "Eastern Standard Time", 894 'shortname' => 'EST', 895 'hasdst' => true, 896 'dstlongname' => "Eastern Daylight Time", 897 'dstshortname' => 'EDT' ), 898 'America/Eirunepe' => array( 899 'offset' => -18000000, 900 'longname' => "Acre Time", 901 'shortname' => 'ACT', 902 'hasdst' => false ), 903 'America/Fort_Wayne' => array( 904 'offset' => -18000000, 905 'longname' => "Eastern Standard Time", 906 'shortname' => 'EST', 907 'hasdst' => false ), 908 'America/Grand_Turk' => array( 909 'offset' => -18000000, 910 'longname' => "Eastern Standard Time", 911 'shortname' => 'EST', 912 'hasdst' => true, 913 'dstlongname' => "Eastern Daylight Time", 914 'dstshortname' => 'EDT' ), 915 'America/Guayaquil' => array( 916 'offset' => -18000000, 917 'longname' => "Ecuador Time", 918 'shortname' => 'ECT', 919 'hasdst' => false ), 920 'America/Havana' => array( 921 'offset' => -18000000, 922 'longname' => "Central Standard Time", 923 'shortname' => 'CST', 924 'hasdst' => true, 925 'dstlongname' => "Central Daylight Time", 926 'dstshortname' => 'CDT' ), 927 'America/Indiana/Indianapolis' => array( 928 'offset' => -18000000, 929 'longname' => "Eastern Standard Time", 930 'shortname' => 'EST', 931 'hasdst' => false ), 932 'America/Indiana/Knox' => array( 933 'offset' => -18000000, 934 'longname' => "Eastern Standard Time", 935 'shortname' => 'EST', 936 'hasdst' => false ), 937 'America/Indiana/Marengo' => array( 938 'offset' => -18000000, 939 'longname' => "Eastern Standard Time", 940 'shortname' => 'EST', 941 'hasdst' => false ), 942 'America/Indiana/Vevay' => array( 943 'offset' => -18000000, 944 'longname' => "Eastern Standard Time", 945 'shortname' => 'EST', 946 'hasdst' => false ), 947 'America/Indianapolis' => array( 948 'offset' => -18000000, 949 'longname' => "Eastern Standard Time", 950 'shortname' => 'EST', 951 'hasdst' => false ), 952 'America/Iqaluit' => array( 953 'offset' => -18000000, 954 'longname' => "Eastern Standard Time", 955 'shortname' => 'EST', 956 'hasdst' => true, 957 'dstlongname' => "Eastern Daylight Time", 958 'dstshortname' => 'EDT' ), 959 'America/Jamaica' => array( 960 'offset' => -18000000, 961 'longname' => "Eastern Standard Time", 962 'shortname' => 'EST', 963 'hasdst' => false ), 964 'America/Kentucky/Louisville' => array( 965 'offset' => -18000000, 966 'longname' => "Eastern Standard Time", 967 'shortname' => 'EST', 968 'hasdst' => true, 969 'dstlongname' => "Eastern Daylight Time", 970 'dstshortname' => 'EDT' ), 971 'America/Kentucky/Monticello' => array( 972 'offset' => -18000000, 973 'longname' => "Eastern Standard Time", 974 'shortname' => 'EST', 975 'hasdst' => true, 976 'dstlongname' => "Eastern Daylight Time", 977 'dstshortname' => 'EDT' ), 978 'America/Knox_IN' => array( 979 'offset' => -18000000, 980 'longname' => "Eastern Standard Time", 981 'shortname' => 'EST', 982 'hasdst' => false ), 983 'America/Lima' => array( 984 'offset' => -18000000, 985 'longname' => "Peru Time", 986 'shortname' => 'PET', 987 'hasdst' => false ), 988 'America/Louisville' => array( 989 'offset' => -18000000, 990 'longname' => "Eastern Standard Time", 991 'shortname' => 'EST', 992 'hasdst' => true, 993 'dstlongname' => "Eastern Daylight Time", 994 'dstshortname' => 'EDT' ), 995 'America/Montreal' => array( 996 'offset' => -18000000, 997 'longname' => "Eastern Standard Time", 998 'shortname' => 'EST', 999 'hasdst' => true, 1000 'dstlongname' => "Eastern Daylight Time", 1001 'dstshortname' => 'EDT' ), 1002 'America/Nassau' => array( 1003 'offset' => -18000000, 1004 'longname' => "Eastern Standard Time", 1005 'shortname' => 'EST', 1006 'hasdst' => true, 1007 'dstlongname' => "Eastern Daylight Time", 1008 'dstshortname' => 'EDT' ), 1009 'America/New_York' => array( 1010 'offset' => -18000000, 1011 'longname' => "Eastern Standard Time", 1012 'shortname' => 'EST', 1013 'hasdst' => true, 1014 'dstlongname' => "Eastern Daylight Time", 1015 'dstshortname' => 'EDT' ), 1016 'America/Nipigon' => array( 1017 'offset' => -18000000, 1018 'longname' => "Eastern Standard Time", 1019 'shortname' => 'EST', 1020 'hasdst' => true, 1021 'dstlongname' => "Eastern Daylight Time", 1022 'dstshortname' => 'EDT' ), 1023 'America/Panama' => array( 1024 'offset' => -18000000, 1025 'longname' => "Eastern Standard Time", 1026 'shortname' => 'EST', 1027 'hasdst' => false ), 1028 'America/Pangnirtung' => array( 1029 'offset' => -18000000, 1030 'longname' => "Eastern Standard Time", 1031 'shortname' => 'EST', 1032 'hasdst' => true, 1033 'dstlongname' => "Eastern Daylight Time", 1034 'dstshortname' => 'EDT' ), 1035 'America/Port-au-Prince' => array( 1036 'offset' => -18000000, 1037 'longname' => "Eastern Standard Time", 1038 'shortname' => 'EST', 1039 'hasdst' => false ), 1040 'America/Porto_Acre' => array( 1041 'offset' => -18000000, 1042 'longname' => "Acre Time", 1043 'shortname' => 'ACT', 1044 'hasdst' => false ), 1045 'America/Rio_Branco' => array( 1046 'offset' => -18000000, 1047 'longname' => "Acre Time", 1048 'shortname' => 'ACT', 1049 'hasdst' => false ), 1050 'America/Thunder_Bay' => array( 1051 'offset' => -18000000, 1052 'longname' => "Eastern Standard Time", 1053 'shortname' => 'EST', 1054 'hasdst' => true, 1055 'dstlongname' => "Eastern Daylight Time", 1056 'dstshortname' => 'EDT' ), 1057 'Brazil/Acre' => array(