aboutsummaryrefslogtreecommitdiffstats
path: root/functions
diff options
context:
space:
mode:
authorJim Hu <jimhu@users.sourceforge.net>2008-12-25 18:45:26 +0000
committerJim Hu <jimhu@users.sourceforge.net>2008-12-25 18:45:26 +0000
commit52ba3b8146dd01c1c7d057359f4485aae5813124 (patch)
treec621fef680e5042594dc2bacfe84b37ffa95d031 /functions
parent3b410264d50c0e4dbd7ded4fe951f832cc1b266c (diff)
downloadphpicalendar-52ba3b8146dd01c1c7d057359f4485aae5813124.tar.gz
phpicalendar-52ba3b8146dd01c1c7d057359f4485aae5813124.tar.bz2
phpicalendar-52ba3b8146dd01c1c7d057359f4485aae5813124.zip
progress on timezones and daylight time
Diffstat (limited to 'functions')
-rw-r--r--functions/date_functions.php143
-rw-r--r--functions/is_daylight.php292
-rw-r--r--functions/parse/end_vevent.php86
-rw-r--r--functions/parse/recur_functions.php3
-rw-r--r--functions/timezones.php976
5 files changed, 908 insertions, 592 deletions
diff --git a/functions/date_functions.php b/functions/date_functions.php
index 3ba1b94..07745c1 100644
--- a/functions/date_functions.php
+++ b/functions/date_functions.php
@@ -153,7 +153,7 @@ function chooseOffset($time, $timezone = '') {
break;
default:
if (is_array($tz_array) && array_key_exists($timezone, $tz_array)) {
- $dlst = date('I', $time);
+ $dlst = is_daylight($time, $timezone);
$offset = $tz_array[$timezone][$dlst];
} else {
$offset = '+0000';
@@ -208,76 +208,105 @@ $return = "
return $return;
}
-// Returns an array of the date and time extracted from the data
-// passed in. This array contains (unixtime, date, time, allday).
-//
-// $data = A string representing a date-time per RFC2445.
-// $property = The property being examined, e.g. DTSTART, DTEND.
-// $field = The full field being examined, e.g. DTSTART;TZID=US/Pacific
-function extractDateTime($data, $property, $field) {
- global $tz_array, $phpiCal_config;
-
- // Initialize values.
- unset($unixtime, $date, $time, $allday);
+/* Returns an array of the date and time extracted from the data
+ passed in. This array contains (unixtime, date, time, allday).
+
+ $data = A string representing a date-time per RFC2445.
+ $property = The property being examined, e.g. DTSTART, DTEND.
+ $field = The full field being examined, e.g. DTSTART;TZID=US/Pacific
+See:http://phpicalendar.org/documentation/index.php/Property_Value_Data_Types#4.3.5___Date-Time
+*/
+function extractDateTime($data, $property, $field) {
+ global $tz_array, $phpiCal_config, $calendar_tz;
+
$allday =''; #suppress error on returning undef.
// Check for zulu time.
$zulu_time = false;
if (substr($data,-1) == 'Z') $zulu_time = true;
- $data = str_replace('Z', '', $data);
-
- // Remove some substrings we don't want to look at.
- $data = str_replace('T', '', $data);
- $field = str_replace(';VALUE=DATE-TIME', '', $field);
+ // Pull out the timezone, or use GMT if zulu time was indicated.
+ if (preg_match('/^'.$property.';TZID=/i', $field)) {
+ $tz_tmp = explode('=', $field);
+ $tz_dt = match_tz($tz_tmp[1]); #echo "$tz_dt<br>";
+ } elseif ($zulu_time) {
+ $tz_dt = 'GMT';
+ }
// Extract date-only values.
- if ((preg_match('/^'.$property.';VALUE=DATE/i', $field)) || (ereg ('^([0-9]{4})([0-9]{2})([0-9]{2})$', $data))) {
+ if ((preg_match('/^'.$property.';VALUE=DATE:/i', $field)) || (ereg ('^([0-9]{4})([0-9]{2})([0-9]{2})$', $data))) {
// Pull out the date value. Minimum year is 1970.
ereg ('([0-9]{4})([0-9]{2})([0-9]{2})', $data, $dt_check);
if ($dt_check[1] < 1970) {
$data = '1971'.$dt_check[2].$dt_check[3];
- }
-
- // Set the values.
- $unixtime = strtotime($data);
- $date = date('Ymd', $unixtime);
+ }
+ # convert to date-time
+ $data = $dt_check[1].$dt_check[2].$dt_check[3]."T000000";
$time = '';
$allday = $data;
- }else{ // Extract date-time values.
-
- // Pull out the timezone, or use GMT if zulu time was indicated.
- if (preg_match('/^'.$property.';TZID=/i', $field)) {
- $tz_tmp = explode('=', $field);
- $tz_dt = $tz_tmp[1];
- unset($tz_tmp);
- } elseif ($zulu_time) {
- $tz_dt = 'GMT';
- }
-
- // Pull out the date and time values. Minimum year is 1970.
- preg_match ('/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{0,2})([0-9]{0,2})/', $data, $regs);
- if ($regs[1] < 1970) {
- $regs[1] = '1971';
- }
- $date = $regs[1] . $regs[2] . $regs[3];
- $time = $regs[4] . $regs[5];
- $unixtime = mktime($regs[4], $regs[5], 0, $regs[2], $regs[3], $regs[1]);
- // Check for daylight savings time.
- $dlst = date('I', $unixtime);
- $server_offset_tmp = chooseOffset($unixtime, $phpiCal_config->timezone);
- if (isset($tz_dt)) {
- $offset_tmp = chooseOffset($unixtime, $tz_dt);
- } elseif (isset($calendar_tz)) {
- $offset_tmp = chooseOffset($unixtime, $calendar_tz);
- } else {
- $offset_tmp = $server_offset_tmp;
- }
- // Set the values.
- $unixtime = calcTime($offset_tmp, $server_offset_tmp, $unixtime);
- $date = date('Ymd', $unixtime);
- $time = date('Hi', $unixtime);
- }
+ }
+ // Extract date-time values.
+ // Pull out the date and time values. Minimum year is 1970.
+ preg_match ('/([0-9]{4})([0-9]{2})([0-9]{2})T{0,1}([0-9]{0,2})([0-9]{0,2})/', $data, $regs);
+ if ($regs[1] < 1970) {
+ $regs[1] = '1971';
+ }
+ $date = $regs[1] . $regs[2] . $regs[3];
+ $time = $regs[4] . $regs[5];
+ $unixtime = mktime($regs[4], $regs[5], 0, $regs[2], $regs[3], $regs[1]);
+ # chooseOffset checks for Daylight Saving Time
+ $server_offset_tmp = chooseOffset($unixtime, $phpiCal_config->timezone);
+ if (isset($tz_dt)) {
+ $offset_tmp = chooseOffset($unixtime, $tz_dt);
+ } elseif (isset($calendar_tz)) {
+ $offset_tmp = chooseOffset($unixtime, $calendar_tz);
+ } else {
+ $offset_tmp = $server_offset_tmp;
+ }
+ // Set the values.
+ $unixtime = calcTime($offset_tmp, $server_offset_tmp, $unixtime);
+ #echo "offset_tmp $offset_tmp, server_offset_tmp $server_offset_tmp, $unixtime =".date("Ymd His",$unixtime)." $time<br>";
+ $date = date('Ymd', $unixtime);
+ if ($allday == '') $time = date('Hi', $unixtime);
+
// Return the results.
return array($unixtime, $date, $time, $allday);
}
+
+/* TZIDs in calendars often contain leading information that should be stripped
+Example: TZID=/mozilla.org/20050126_1/Europe/Berlin
+if this has been set by the parse_tzs scanning the file, then it should be OK, but sometimes a calendar may have a tzid without having defined the vtimezone, expecting a match (This will often happen when users send isolated events in bug reports; the calendars should have vtimezones).
+
+Need to return the part that matches a key in $tz_array
+*/
+function match_tz($data){
+ global $tz_array;
+ if (isset($tz_array[$data])) return $data;
+ foreach ($tz_array as $key=>$val){
+ if (strpos(" $data",$key) > 0) return $key;
+ }
+ return $data;
+}
+
+require_once(BASE."functions/is_daylight.php");
+/* function is_daylight($date, $timezone) returns 1 if daylight time, 0 if not
+
+ default is to use the server's date function. This will be off when the timezone's rules are not the same as the server's rules. In php5.2+ there seems to be a better way to do this, but we can't count on users having php5.2+.
+
+ Although we set dt_start and st_start in parse_tzs.php, these are not rrules and I don't know how to use them yet. So we'll do it by brute force for the ones we know about, from: http://www.webexhibits.org/daylightsaving/g.html
+
+ Note that this sends a screwy time value - it's not necessarily UTC unixtime, since the mktime functions that create the time are not using the timezone.
+
+function is_daylight($time, $timezone){
+ global $tz_array;
+ # default to std time, overwrite if daylight.
+ $dlst = 0;
+ switch ($timezone){
+ default:
+ $dlst = date('I', $time);
+ }
+
+ return $dlst;
+
+}
+*/
?> \ No newline at end of file
diff --git a/functions/is_daylight.php b/functions/is_daylight.php
new file mode 100644
index 0000000..c6f79ef
--- /dev/null
+++ b/functions/is_daylight.php
@@ -0,0 +1,292 @@
+<?php
+/* values are offset in hhmm (not seconds!) relative to GMT
+ case The first value is for standard, and the second value is for daylight
+*/
+function is_daylight($time, $timezone){
+ global $tz_array, $summary;
+ # default to std time, overwrite if daylight.
+ $dlst = 0;
+ # Subtract the offset for std time. This will be slightly off in some cases, but will be closer than using nothing (?).
+ $time = $time - calcOffset($tz_array[$timezone][0]);
+ $year = date("Y", $time);
+ $month = date("m",$time);
+ $day = date("d",$time);
+ $hour = date("H",$time);
+ switch ($timezone){
+ case 'US/Samoa': # array('-1100', '-1100');
+ case 'America/Adak': # array('-1000', '-0900');
+ case 'America/Atka':
+ case 'US/Aleutian':
+ case 'America/Anchorage': # array('-0900', '-0800');
+ case 'America/Nome':
+ case 'US/Alaska':
+ case 'America/Juneau':
+ case 'America/Yakutat':
+ case 'America/Dawson': # array('-0800', '-0700');
+ case 'America/Los_Angeles':
+ case 'America/Vancouver':
+ case 'America/Whitehorse':
+ case 'Canada/Pacific':
+ case 'Canada/Yukon':
+ case 'PST8PDT':
+ case 'US/Pacific':
+ case 'America/Boise': # array('-0700', '-0600');
+ case 'America/Cambridge_Bay':
+ case 'America/Denver':
+ case 'America/Edmonton':
+ case 'America/Inuvik':
+ case 'America/Shiprock':
+ case 'America/Yellowknife':
+ case 'Canada/Mountain':
+ case 'MST7MDT':
+ case 'Navajo':
+ case 'US/Mountain':
+ case 'America/Chicago': # array('-0600', '-0500');
+ case 'America/Menominee':
+ case 'America/Merida':
+ case 'America/Rainy_River':
+ case 'America/Rankin_Inlet':
+ case 'America/Winnipeg':
+ case 'Canada/Central':
+ case 'CST6CDT':
+ case 'US/Central':
+ case 'America/Detroit': # array('-0500', '-0400');
+ case 'America/Grand_Turk':
+ case 'America/Iqaluit':
+ case 'America/Kentucky/Louisville':
+ case 'America/Kentucky/Monticello':
+ case 'America/Louisville':
+ case 'America/Montreal':
+ case 'America/Nassau':
+ case 'America/New_York':
+ case 'America/Nipigon':
+ case 'America/Pangnirtung':
+ case 'America/Thunder_Bay':
+ case 'Canada/Eastern':
+ case 'EST5EDT':
+ case 'US/Eastern':
+ case 'US/Michigan':
+ case 'America/Glace_Bay': # array('-0400', '-0300');
+ case 'America/Goose_Bay':
+ case 'America/Halifax':
+ case 'America/Thule':
+ case 'Canada/Atlantic':
+ case 'America/St_Johns': # array('-0330', '-0230');
+ case 'Canada/Newfoundland':
+ case 'America/Godthab': # array('-0300', '-0200');
+ case 'America/Miquelon':
+ if ($year < 2007){
+ $start = strtotime("+1 Sun",strtotime($year."0331"));
+ $end = strtotime("-1 Sun",strtotime($year."1101"));
+ }else{
+ $start = strtotime("+2 Sun",strtotime($year."0300"));
+ $end = strtotime("+1 Sun",strtotime($year."1031"));
+ }
+ break;
+ case 'America/Havana':
+ case 'Cuba':
+ $start = strtotime("+3 Sun",strtotime($year."0300"));
+ $end = strtotime("-1 Sun",strtotime($year."1101"));
+ break;
+ case 'America/Cancun':
+ case 'America/Chihuahua':
+ case 'America/Ensenada':
+ case 'America/Tijuana':
+ case 'America/Mexico_City':
+ case 'America/Monterrey':
+ case 'Atlantic/Bermuda':
+ case 'Mexico/BajaSur':
+ case 'Mexico/BajaNorte':
+ case 'Mexico/General':
+ case 'America/Mazatlan':
+ $start = strtotime("+1 Sun",strtotime($year."0331"));
+ $end = strtotime("-1 Sun",strtotime($year."1101"));
+ break;
+ case 'Chile/EasterIsland': # array('-0500', '-0600');
+ case 'Pacific/Easter':
+
+ break;
+ case 'America/Asuncion': # array('-0300', '-0400');
+ case 'America/Cuiaba':
+ case 'America/Santiago':
+ case 'Antarctica/Palmer':
+ case 'Atlantic/Stanley':
+ case 'Chile/Continental':
+
+ break;
+ case 'America/Araguaina': # array('-0200', '-0300');
+ case 'America/Sao_Paulo':
+ case 'Brazil/East':
+
+ break;
+ case 'America/Scoresbysund': # array('-0100', '+0000');
+ case 'Atlantic/Azores':
+
+ break;
+ case 'Atlantic/Canary': # array('+0000', '+0100');
+ case 'Atlantic/Faeroe':
+ case 'Atlantic/Madeira':
+ case 'Eire':
+ case 'Europe/Belfast':
+ case 'Europe/Dublin':
+ case 'Europe/Lisbon':
+ case 'Europe/London':
+ case 'GB-Eire':
+ case 'GB':
+ case 'Portugal':
+ case 'WET':
+
+ break;
+ case 'Africa/Ceuta': # array('+0100', '+0200');
+ case 'Arctic/Longyearbyen':
+ case 'CET':
+ case 'Europe/Amsterdam':
+ case 'Europe/Andorra':
+ case 'Europe/Belgrade':
+ case 'Europe/Berlin':
+ case 'Europe/Bratislava':
+ case 'Europe/Brussels':
+ case 'Europe/Budapest':
+ case 'Europe/Copenhagen':
+ case 'Europe/Gibraltar':
+ case 'Europe/Ljubljana':
+ case 'Europe/Luxembourg':
+ case 'Europe/Madrid':
+ case 'Europe/Malta':
+ case 'Europe/Monaco':
+ case 'Europe/Oslo':
+ case 'Europe/Paris':
+ case 'Europe/Prague':
+ case 'Europe/Rome':
+ case 'Europe/San_Marino':
+ case 'Europe/Sarajevo':
+ case 'Europe/Skopje':
+ case 'Europe/Stockholm':
+ case 'Europe/Tirane':
+ case 'Europe/Vaduz':
+ case 'Europe/Vatican':
+ case 'Europe/Vienna':
+ case 'Europe/Warsaw':
+ case 'Europe/Zagreb':
+ case 'Europe/Zurich':
+ case 'MET':
+ case 'Poland':
+ $start = strtotime("-1 Sun",strtotime($year."0401"));
+ $end = strtotime("-1 Sun",strtotime($year."1101"));
+ break;
+ case 'Africa/Windhoek': # array('+0200', '+0100');
+
+ break;
+ case 'Asia/Amman': # array('+0200', '+0300');
+ case 'Asia/Beirut':
+ case 'Asia/Damascus':
+ case 'Asia/Gaza':
+ case 'Asia/Istanbul':
+ case 'Asia/Jerusalem':
+ case 'Asia/Nicosia':
+ case 'Asia/Tel_Aviv':
+ case 'EET':
+ case 'Egypt':
+ case 'Europe/Athens':
+ case 'Europe/Bucharest':
+ case 'Europe/Chisinau':
+ case 'Europe/Helsinki':
+ case 'Europe/Istanbul':
+ case 'Europe/Kaliningrad':
+ case 'Europe/Kiev':
+ case 'Europe/Minsk':
+ case 'Europe/Nicosia':
+ case 'Europe/Riga':
+ case 'Europe/Simferopol':
+ case 'Europe/Sofia':
+ case 'Europe/Tiraspol':
+ case 'Europe/Uzhgorod':
+ case 'Europe/Zaporozhye':
+ case 'Israel':
+ case 'Turkey':
+
+ break;
+ case 'Asia/Baghdad': # array('+0300', '+0400');
+ case 'Europe/Moscow':
+ case 'W-SU':
+
+ break;
+ case 'Asia/Tehran': # array('+0330', '+0430');
+ case 'Iran':
+
+ break;
+ case 'Asia/Aqtau': # array('+0400', '+0500');
+ case 'Asia/Baku':
+ case 'Asia/Tbilisi':
+ case 'Asia/Yerevan':
+ case 'Europe/Samara':
+
+ break;
+ case 'Asia/Aqtobe': # array('+0500', '+0600');
+ case 'Asia/Bishkek':
+ case 'Asia/Yekaterinburg':
+
+ break;
+ case 'Asia/Almaty': # array('+0600', '+0700');
+ case 'Asia/Novosibirsk':
+ case 'Asia/Omsk':
+
+ break;
+ case 'Asia/Krasnoyarsk': # array('+0700', '+0800');
+
+ break;
+ case 'Asia/Irkutsk': # array('+0800', '+0900');
+
+ break;
+ case 'Asia/Yakutsk': # array('+0900', '+1000');
+
+
+ break;
+ case 'Asia/Vladivostok': # array('+1000', '+1100');
+ case 'Australia/ACT':
+ case 'Australia/Melbourne':
+ case 'Australia/NSW':
+ case 'Australia/Sydney':
+ case 'Australia/Tasmania':
+ case 'Australia/Victoria':
+
+ break;
+ case 'Australia/Adelaide': # array('+1030', '+0930');
+ case 'Australia/Broken_Hill':
+ case 'Australia/South':
+ case 'Australia/Yancowinna':
+
+ break;
+ case 'Asia/Magadan': # array('+1100', '+1200');
+
+ break;
+ case 'Australia/LHI': # array('+1100', '+1030');
+ case 'Australia/Lord_Howe':
+
+ break;
+ case 'Australia/Canberra': # array('+1100', '+1000');
+ case 'Australia/Hobart':
+
+ break;
+ case 'Asia/Anadyr': # array('+1200', '+1300');
+ case 'Asia/Kamchatka':
+
+ break;
+ case 'Antarctica/McMurdo':
+ case 'Antarctica/South_Pole':
+ case 'NZ': # array('+1300', '+1200');
+ case 'Pacific/Auckland':
+ break;
+ case 'NZ-CHAT':
+ case 'Pacific/Chatham': # array('+1345', '+1245');
+ break;
+ default:
+ $dlst = date('I', $time);
+ }
+ if (isset($start,$end) && $time >= $start && $time < $end) $dlst = 1;
+ echo "$summary $dlst <br>";
+
+ return $dlst;
+
+}
+?> \ No newline at end of file
diff --git a/functions/parse/end_vevent.php b/functions/parse/end_vevent.php
index 1dfe221..5970e65 100644
--- a/functions/parse/end_vevent.php
+++ b/functions/parse/end_vevent.php
@@ -320,7 +320,6 @@ foreach($recur_data as $recur_data_unixtime) {
} else {
$start_unixtime_tmp = mktime($recur_data_hour,$recur_data_minute,0,$recur_data_month,$recur_data_day,$recur_data_year);
$end_unixtime_tmp = $start_unixtime_tmp + $length;
-
if (($end_time >= $phpiCal_config->bleed_time) && ($bleed_check == '-1')) {
$start_tmp = strtotime(date('Ymd',$start_unixtime_tmp));
$end_date_tmp = date('Ymd',$end_unixtime_tmp);
@@ -339,57 +338,18 @@ foreach($recur_data as $recur_data_unixtime) {
$end_time_tmp = '2400';
$display_end_tmp = $end_time;
}
-
- // Let's double check the until to not write past it
- $until_check = $start_date_tmp.$time_tmp.'00';
- if (@$until > $until_check) {
- $master_array[$start_date_tmp][$time_tmp][$uid] = array (
- 'event_start' => $start_time_tmp,
- 'event_end' => $end_time_tmp,
- 'start_unixtime' => $start_unixtime_tmp,
- 'end_unixtime' => $end_unixtime_tmp,
- 'event_text' => $summary,
- 'event_length' => $length,
- 'event_overlap' => 0,
- 'description' => $description,
- 'status' => $status,
- 'class' => $class,
- 'spans_day' => true,
- 'location' => $location,
- 'organizer' => serialize($organizer),
- 'attendee' => serialize($attendee),
- 'calnumber' => $calnumber,
- 'calname' => $actual_calname,
- 'url' => $url,
- 'recur' => $recur);
- if (isset($display_end_tmp)){
- $master_array[$start_date_tmp][$time_tmp][$uid]['display_end'] = $display_end_tmp;
- }
- checkOverlap($start_date_tmp, $time_tmp, $uid);
- }
- $start_tmp = strtotime('+1 day',$start_tmp);
- }
- } else {
- if ($bleed_check == '-1') {
- $display_end_tmp = $end_time;
- $end_time_tmp1 = '2400';
-
- }
- if (!isset($end_time_tmp1)) $end_time_tmp1 = $end_time;
-
- // Let's double check the until to not write past it
- $master_array[($recur_data_date)][($hour.$minute)][$uid] = array (
- 'event_start' => $start_time,
- 'event_end' => $end_time_tmp1,
+ $master_array[$start_date_tmp][$time_tmp][$uid] = array (
+ 'event_start' => $start_time_tmp,
+ 'event_end' => $end_time_tmp,
'start_unixtime' => $start_unixtime_tmp,
'end_unixtime' => $end_unixtime_tmp,
- 'event_text' => $summary,
+ 'event_text' => $summary, #
'event_length' => $length,
'event_overlap' => 0,
'description' => $description,
'status' => $status,
'class' => $class,
- 'spans_day' => false,
+ 'spans_day' => true,
'location' => $location,
'organizer' => serialize($organizer),
'attendee' => serialize($attendee),
@@ -398,9 +358,41 @@ foreach($recur_data as $recur_data_unixtime) {
'url' => $url,
'recur' => $recur);
if (isset($display_end_tmp)){
- $master_array[($recur_data_date)][($hour.$minute)][$uid]['display_end'] = $display_end_tmp;
+ $master_array[$start_date_tmp][$time_tmp][$uid]['display_end'] = $display_end_tmp;
}
- checkOverlap($recur_data_date, ($hour.$minute), $uid);
+ checkOverlap($start_date_tmp, $time_tmp, $uid);
+ $start_tmp = strtotime('+1 day',$start_tmp);
+ }
+ } else {
+ if ($bleed_check == '-1') {
+ $display_end_tmp = $end_time;
+ $end_time_tmp1 = '2400';
+
+ }
+ if (!isset($end_time_tmp1)) $end_time_tmp1 = $end_time;
+ $master_array[($recur_data_date)][($hour.$minute)][$uid] = array (
+ 'event_start' => $start_time,
+ 'event_end' => $end_time_tmp1,
+ 'start_unixtime' => $start_unixtime_tmp,
+ 'end_unixtime' => $end_unixtime_tmp,
+ 'event_text' => $summary,
+ 'event_length' => $length,
+ 'event_overlap' => 0,
+ 'description' => $description,
+ 'status' => $status,
+ 'class' => $class,
+ 'spans_day' => false,
+ 'location' => $location,
+ 'organizer' => serialize($organizer),
+ 'attendee' => serialize($attendee),
+ 'calnumber' => $calnumber,
+ 'calname' => $actual_calname,
+ 'url' => $url,
+ 'recur' => $recur);
+ if (isset($display_end_tmp)){
+ $master_array[($recur_data_date)][($hour.$minute)][$uid]['display_end'] = $display_end_tmp;
+ }
+ checkOverlap($recur_data_date, ($hour.$minute), $uid);
}
}
diff --git a/functions/parse/recur_functions.php b/functions/parse/recur_functions.php
index e45f4aa..6a58d2d 100644
--- a/functions/parse/recur_functions.php
+++ b/functions/parse/recur_functions.php
@@ -28,6 +28,7 @@ function add_recur($times,$freq=''){
if (!is_array($times)) $times = array($times);
/*BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR,
BYMINUTE, BYSECOND and BYSETPOS*/
+#dump_times($times);
$times = restrict_bymonth($times,$freq);
# $times = restrict_byweekno($times,$freq);
$times = restrict_byyearday($times,$freq);
@@ -253,6 +254,6 @@ function dump_times($times){
global $summary;
echo "<pre>$summary times:";
#var_dump($times);
- foreach($times as $time) echo "\ndate:".date("Ymd his",$time);
+ foreach($times as $time) echo "\ndate:".date("Y-m-d H:i:s",$time);
echo "</pre>";
}
diff --git a/functions/timezones.php b/functions/timezones.php
index 5c27a02..ae140f0 100644
--- a/functions/timezones.php
+++ b/functions/timezones.php
@@ -1,489 +1,491 @@
<?php
-$tz_array['Africa/Addis_Ababa'] = array('+0300', '+0300');
-$tz_array['Africa/Algiers'] = array('+0100', '+0100');
-$tz_array['Africa/Asmera'] = array('+0300', '+0300');
-$tz_array['Africa/Bangui'] = array('+0100', '+0100');
-$tz_array['Africa/Blantyre'] = array('+0200', '+0200');
-$tz_array['Africa/Brazzaville'] = array('+0100', '+0100');
-$tz_array['Africa/Bujumbura'] = array('+0200', '+0200');
-$tz_array['Africa/Cairo'] = array('+0200', '+0300');
-$tz_array['Africa/Ceuta'] = array('+0100', '+0200');
-$tz_array['Africa/Dar_es_Salaam'] = array('+0300', '+0300');
-$tz_array['Africa/Djibouti'] = array('+0300', '+0300');
-$tz_array['Africa/Douala'] = array('+0100', '+0100');
-$tz_array['Africa/Gaborone'] = array('+0200', '+0200');
-$tz_array['Africa/Harare'] = array('+0200', '+0200');
-$tz_array['Africa/Johannesburg'] = array('+0200', '+0200');
-$tz_array['Africa/Kampala'] = array('+0300', '+0300');
-$tz_array['Africa/Khartoum'] = array('+0300', '+0300');
-$tz_array['Africa/Kigali'] = array('+0200', '+0200');
-$tz_array['Africa/Kinshasa'] = array('+0100', '+0100');
-$tz_array['Africa/Lagos'] = array('+0100', '+0100');
-$tz_array['Africa/Libreville'] = array('+0100', '+0100');
-$tz_array['Africa/Luanda'] = array('+0100', '+0100');
-$tz_array['Africa/Lubumbashi'] = array('+0200', '+0200');
-$tz_array['Africa/Lusaka'] = array('+0200', '+0200');
-$tz_array['Africa/Malabo'] = array('+0100', '+0100');
-$tz_array['Africa/Maputo'] = array('+0200', '+0200');
-$tz_array['Africa/Maseru'] = array('+0200', '+0200');
-$tz_array['Africa/Mbabane'] = array('+0200', '+0200');
-$tz_array['Africa/Mogadishu'] = array('+0300', '+0300');
-$tz_array['Africa/Nairobi'] = array('+0300', '+0300');
-$tz_array['Africa/Ndjamena'] = array('+0100', '+0100');
-$tz_array['Africa/Niamey'] = array('+0100', '+0100');
-$tz_array['Africa/Porto-Novo'] = array('+0100', '+0100');
-$tz_array['Africa/Tripoli'] = array('+0200', '+0200');
-$tz_array['Africa/Tunis'] = array('+0100', '+0100');
-$tz_array['Africa/Windhoek'] = array('+0200', '+0100');
-$tz_array['America/Adak'] = array('-1000', '-0900');
-$tz_array['America/Anchorage'] = array('-0900', '-0800');
-$tz_array['America/Anguilla'] = array('-0400', '-0400');
-$tz_array['America/Antigua'] = array('-0400', '-0400');
-$tz_array['America/Araguaina'] = array('-0200', '-0300');
-$tz_array['America/Aruba'] = array('-0400', '-0400');
-$tz_array['America/Asuncion'] = array('-0300', '-0400');
-$tz_array['America/Atka'] = array('-1000', '-0900');
-$tz_array['America/Barbados'] = array('-0400', '-0400');
-$tz_array['America/Belem'] = array('-0300', '-0300');
-$tz_array['America/Belize'] = array('-0600', '-0600');
-$tz_array['America/Boa_Vista'] = array('-0400', '-0400');
-$tz_array['America/Bogota'] = array('-0500', '-0500');
-$tz_array['America/Boise'] = array('-0700', '-0600');
-$tz_array['America/Buenos_Aires'] = array('-0300', '-0300');
-$tz_array['America/Cambridge_Bay'] = array('-0700', '-0600');
-$tz_array['America/Cancun'] = array('-0600', '-0500');
-$tz_array['America/Caracas'] = array('-0400', '-0400');
-$tz_array['America/Catamarca'] = array('-0300', '-0300');
-$tz_array['America/Cayenne'] = array('-0300', '-0300');
-$tz_array['America/Cayman'] = array('-0500', '-0500');
-$tz_array['America/Chicago'] = array('-0600', '-0500');
-$tz_array['America/Chihuahua'] = array('-0700', '-0600');
-$tz_array['America/Cordoba'] = array('-0300', '-0300');
-$tz_array['America/Costa_Rica'] = array('-0600', '-0600');
-$tz_array['America/Cuiaba'] = array('-0300', '-0400');
-$tz_array['America/Curacao'] = array('-0400', '-0400');
-$tz_array['America/Dawson'] = array('-0800', '-0700');
-$tz_array['America/Dawson_Creek'] = array('-0700', '-0700');
-$tz_array['America/Denver'] = array('-0700', '-0600');
-$tz_array['America/Detroit'] = array('-0500', '-0400');
-$tz_array['America/Dominica'] = array('-0400', '-0400');
-$tz_array['America/Edmonton'] = array('-0700', '-0600');
-$tz_array['America/Eirunepe'] = array('-0500', '-0500');
-$tz_array['America/El_Salvador'] = array('-0600', '-0600');
-$tz_array['America/Ensenada'] = array('-0800', '-0700');
-$tz_array['America/Fort_Wayne'] = array('-0500', '-0500');
-$tz_array['America/Fortaleza'] = array('-0300', '-0300');
-$tz_array['America/Glace_Bay'] = array('-0400', '-0300');
-$tz_array['America/Godthab'] = array('-0300', '-0200');
-$tz_array['America/Goose_Bay'] = array('-0400', '-0300');
-$tz_array['America/Grand_Turk'] = array('-0500', '-0400');
-$tz_array['America/Grenada'] = array('-0400', '-0400');
-$tz_array['America/Guadeloupe'] = array('-0400', '-0400');
-$tz_array['America/Guatemala'] = array('-0600', '-0600');
-$tz_array['America/Guayaquil'] = array('-0500', '-0500');
-$tz_array['America/Guyana'] = array('-0400', '-0400');
-$tz_array['America/Halifax'] = array('-0400', '-0300');
-$tz_array['America/Havana'] = array('-0500', '-0400');
-$tz_array['America/Hermosillo'] = array('-0700', '-0700');
-$tz_array['America/Indiana/Indianapolis'] = array('-0500', '-0500');
-$tz_array['America/Indiana/Knox'] = array('-0500', '-0500');
-$tz_array['America/Indiana/Marengo'] = array('-0500', '-0500');
-$tz_array['America/Indiana/Vevay'] = array('-0500', '-0500');
-$tz_array['America/Indianapolis'] = array('-0500', '-0500');
-$tz_array['America/Inuvik'] = array('-0700', '-0600');
-$tz_array['America/Iqaluit'] = array('-0500', '-0400');
-$tz_array['America/Jamaica'] = array('-0500', '-0500');
-$tz_array['America/Jujuy'] = array('-0300', '-0300');
-$tz_array['America/Juneau'] = array('-0900', '-0800');
-$tz_array['America/Kentucky/Louisville'] = array('-0500', '-0400');
-$tz_array['America/Kentucky/Monticello'] = array('-0500', '-0400');
-$tz_array['America/Knox_IN'] = array('-0500', '-0500');
-$tz_array['America/La_Paz'] = array('-0400', '-0400');
-$tz_array['America/Lima'] = array('-0500', '-0500');
-$tz_array['America/Los_Angeles'] = array('-0800', '-0700');
-$tz_array['America/Louisville'] = array('-0500', '-0400');
-$tz_array['America/Maceio'] = array('-0300', '-0300');
-$tz_array['America/Managua'] = array('-0600', '-0600');
-$tz_array['America/Manaus'] = array('-0400', '-0400');
-$tz_array['America/Martinique'] = array('-0400', '-0400');
-$tz_array['America/Mazatlan'] = array('-0700', '-0600');
-$tz_array['America/Mendoza'] = array('-0300', '-0300');
-$tz_array['America/Menominee'] = array('-0600', '-0500');
-$tz_array['America/Merida'] = array('-0600', '-0500');
-$tz_array['America/Mexico_City'] = array('-0600', '-0500');
-$tz_array['America/Miquelon'] = array('-0300', '-0200');
-$tz_array['America/Monterrey'] = array('-0600', '-0500');
-$tz_array['America/Montevideo'] = array('-0300', '-0300');
-$tz_array['America/Montreal'] = array('-0500', '-0400');
-$tz_array['America/Montserrat'] = array('-0400', '-0400');
-$tz_array['America/Nassau'] = array('-0500', '-0400');
-$tz_array['America/New_York'] = array('-0500', '-0400');
-$tz_array['America/Nipigon'] = array('-0500', '-0400');
-$tz_array['America/Nome'] = array('-0900', '-0800');
-$tz_array['America/Noronha'] = array('-0200', '-0200');
-$tz_array['America/Panama'] = array('-0500', '-0500');
-$tz_array['America/Pangnirtung'] = array('-0500', '-0400');
-$tz_array['America/Paramaribo'] = array('-0300', '-0300');
-$tz_array['America/Phoenix'] = array('-0700', '-0700');
-$tz_array['America/Port-au-Prince'] = array('-0500', '-0500');
-$tz_array['America/Port_of_Spain'] = array('-0400', '-0400');
-$tz_array['America/Porto_Acre'] = array('-0500', '-0500');
-$tz_array['America/Porto_Velho'] = array('-0400', '-0400');
-$tz_array['America/Puerto_Rico'] = array('-0400', '-0400');
-$tz_array['America/Rainy_River'] = array('-0600', '-0500');
-$tz_array['America/Rankin_Inlet'] = array('-0600', '-0500');
-$tz_array['America/Recife'] = array('-0300', '-0300');
-$tz_array['America/Regina'] = array('-0600', '-0600');
-$tz_array['America/Rio_Branco'] = array('-0500', '-0500');
-$tz_array['America/Rosario'] = array('-0300', '-0300');
-$tz_array['America/Santiago'] = array('-0300', '-0400');
-$tz_array['America/Santo_Domingo'] = array('-0400', '-0400');
-$tz_array['America/Sao_Paulo'] = array('-0200', '-0300');
-$tz_array['America/Scoresbysund'] = array('-0100', '+0000');
-$tz_array['America/Shiprock'] = array('-0700', '-0600');
-$tz_array['America/St_Johns'] = array('-031800', '-021800');
-$tz_array['America/St_Kitts'] = array('-0400', '-0400');
-$tz_array['America/St_Lucia'] = array('-0400', '-0400');
-$tz_array['America/St_Thomas'] = array('-0400', '-0400');
-$tz_array['America/St_Vincent'] = array('-0400', '-0400');
-$tz_array['America/Swift_Current'] = array('-0600', '-0600');
-$tz_array['America/Tegucigalpa'] = array('-0600', '-0600');
-$tz_array['America/Thule'] = array('-0400', '-0300');
-$tz_array['America/Thunder_Bay'] = array('-0500', '-0400');
-$tz_array['America/Tijuana'] = array('-0800', '-0700');
-$tz_array['America/Tortola'] = array('-0400', '-0400');
-$tz_array['America/Vancouver'] = array('-0800', '-0700');
-$tz_array['America/Virgin'] = array('-0400', '-0400');
-$tz_array['America/Whitehorse'] = array('-0800', '-0700');
-$tz_array['America/Winnipeg'] = array('-0600', '-0500');
-$tz_array['America/Yakutat'] = array('-0900', '-0800');
-$tz_array['America/Yellowknife'] = array('-0700', '-0600');
-$tz_array['Antarctica/Casey'] = array('+0800', '+0800');
-$tz_array['Antarctica/Davis'] = array('+0700', '+0700');
-$tz_array['Antarctica/DumontDUrville'] = array('+1000', '+1000');
-$tz_array['Antarctica/Mawson'] = array('+0600', '+0600');
-$tz_array['Antarctica/McMurdo'] = array('+1300', '+1200');
-$tz_array['Antarctica/Palmer'] = array('-0300', '-0400');
-$tz_array['Antarctica/South_Pole'] = array('+1300', '+1200');
-$tz_array['Antarctica/Syowa'] = array('+0300', '+0300');
-$tz_array['Antarctica/Vostok'] = array('+0600', '+0600');
-$tz_array['Arctic/Longyearbyen'] = array('+0100', '+0200');
-$tz_array['Asia/Aden'] = array('+0300', '+0300');
-$tz_array['Asia/Almaty'] = array('+0600', '+0700');
-$tz_array['Asia/Amman'] = array('+0200', '+0300');
-$tz_array['Asia/Anadyr'] = array('+1200', '+1300');
-$tz_array['Asia/Aqtau'] = array('+0400', '+0500');
-$tz_array['Asia/Aqtobe'] = array('+0500', '+0600');
-$tz_array['Asia/Ashgabat'] = array('+0500', '+0500');
-$tz_array['Asia/Ashkhabad'] = array('+0500', '+0500');
-$tz_array['Asia/Baghdad'] = array('+0300', '+0400');
-$tz_array['Asia/Bahrain'] = array('+0300', '+0300');
-$tz_array['Asia/Baku'] = array('+0400', '+0500');
-$tz_array['Asia/Bangkok'] = array('+0700', '+0700');
-$tz_array['Asia/Beirut'] = array('+0200', '+0300');
-$tz_array['Asia/Bishkek'] = array('+0500', '+0600');
-$tz_array['Asia/Brunei'] = array('+0800', '+0800');
-$tz_array['Asia/Calcutta'] = array('+051800', '+051800');
-$tz_array['Asia/Chungking'] = array('+0800', '+0800');
-$tz_array['Asia/Colombo'] = array('+0600', '+0600');
-$tz_array['Asia/Dacca'] = array('+0600', '+0600');
-$tz_array['Asia/Damascus'] = array('+0200', '+0300');
-$tz_array['Asia/Dhaka'] = array('+0600', '+0600');
-$tz_array['Asia/Dili'] = array('+0900', '+0900');
-$tz_array['Asia/Dubai'] = array('+0400', '+0400');
-$tz_array['Asia/Dushanbe'] = array('+0500', '+0500');
-$tz_array['Asia/Gaza'] = array('+0200', '+0300');
-$tz_array['Asia/Harbin'] = array('+0800', '+0800');
-$tz_array['Asia/Hong_Kong'] = array('+0800', '+0800');
-$tz_array['Asia/Hovd'] = array('+0700', '+0700');
-$tz_array['Asia/Irkutsk'] = array('+0800', '+0900');
-$tz_array['Asia/Istanbul'] = array('+0200', '+0300');
-$tz_array['Asia/Jakarta'] = array('+0700', '+0700');
-$tz_array['Asia/Jayapura'] = array('+0900', '+0900');
-$tz_array['Asia/Jerusalem'] = array('+0200', '+0300');
-$tz_array['Asia/Kabul'] = array('+041800', '+041800');
-$tz_array['Asia/Kamchatka'] = array('+1200', '+1300');
-$tz_array['Asia/Karachi'] = array('+0500', '+0500');
-$tz_array['Asia/Kashgar'] = array('+0800', '+0800');
-$tz_array['Asia/Katmandu'] = array('+052700', '+052700');
-$tz_array['Asia/Krasnoyarsk'] = array('+0700', '+0800');
-$tz_array['Asia/Kuala_Lumpur'] = array('+0800', '+0800');
-$tz_array['Asia/Kuching'] = array('+0800', '+0800');
-$tz_array['Asia/Kuwait'] = array('+0300', '+0300');
-$tz_array['Asia/Macao'] = array('+0800', '+0800');
-$tz_array['Asia/Magadan'] = array('+1100', '+1200');
-$tz_array['Asia/Manila'] = array('+0800', '+0800');
-$tz_array['Asia/Muscat'] = array('+0400', '+0400');
-$tz_array['Asia/Nicosia'] = array('+0200', '+0300');
-$tz_array['Asia/Novosibirsk'] = array('+0600', '+0700');
-$tz_array['Asia/Omsk'] = array('+0600', '+0700');
-$tz_array['Asia/Phnom_Penh'] = array('+0700', '+0700');
-$tz_array['Asia/Pyongyang'] = array('+0900', '+0900');
-$tz_array['Asia/Qatar'] = array('+0300', '+0300');
-$tz_array['Asia/Rangoon'] = array('+061800', '+061800');
-$tz_array['Asia/Riyadh'] = array('+0300', '+0300');
-$tz_array['Asia/Riyadh87'] = array('+03424', '+03424');
-$tz_array['Asia/Riyadh88'] = array('+03424', '+03424');
-$tz_array['Asia/Riyadh89'] = array('+03424', '+03424');
-$tz_array['Asia/Saigon'] = array('+0700', '+0700');
-$tz_array['Asia/Samarkand'] = array('+0500', '+0500');
-$tz_array['Asia/Seoul'] = array('+0900', '+0900');
-$tz_array['Asia/Shanghai'] = array('+0800', '+0800');
-$tz_array['Asia/Singapore'] = array('+0800', '+0800');
-$tz_array['Asia/Taipei'] = array('+0800', '+0800');
-$tz_array['Asia/Tashkent'] = array('+0500', '+0500');
-$tz_array['Asia/Tbilisi'] = array('+0400', '+0500');
-$tz_array['Asia/Tehran'] = array('+031800', '+041800');
-$tz_array['Asia/Tel_Aviv'] = array('+0200', '+0300');
-$tz_array['Asia/Thimbu'] = array('+0600', '+0600');
-$tz_array['Asia/Thimphu'] = array('+0600', '+0600');
-$tz_array['Asia/Tokyo'] = array('+0900', '+0900');
-$tz_array['Asia/Ujung_Pandang'] = array('+0800', '+0800');
-$tz_array['Asia/Ulaanbaatar'] = array('+0800', '+0800');
-$tz_array['Asia/Ulan_Bator'] = array('+0800', '+0800');
-$tz_array['Asia/Urumqi'] = array('+0800', '+0800');
-$tz_array['Asia/Vientiane'] = array('+0700', '+0700');
-$tz_array['Asia/Vladivostok'] = array('+1000', '+1100');
-$tz_array['Asia/Yakutsk'] = array('+0900', '+1000');
-$tz_array['Asia/Yekaterinburg'] = array('+0500', '+0600');
-$tz_array['Asia/Yerevan'] = array('+0400', '+0500');
-$tz_array['Atlantic/Azores'] = array('-0100', '+0000');
-$tz_array['Atlantic/Bermuda'] = array('-0400', '-0300');
-$tz_array['Atlantic/Canary'] = array('+0000', '+0100');
-$tz_array['Atlantic/Cape_Verde'] = array('-0100', '-0100');
-$tz_array['Atlantic/Faeroe'] = array('+0000', '+0100');
-$tz_array['Atlantic/Jan_Mayen'] = array('-0100', '-0100');
-$tz_array['Atlantic/Madeira'] = array('+0000', '+0100');
-$tz_array['Atlantic/South_Georgia'] = array('-0200', '-0200');
-$tz_array['Atlantic/Stanley'] = array('-0300', '-0400');
-$tz_array['Australia/ACT'] = array('+1000', '+1100');
-$tz_array['Australia/Adelaide'] = array('+101800', '+091800');
-$tz_array['Australia/Brisbane'] = array('+1000', '+1000');
-$tz_array['Australia/Broken_Hill'] = array('+101800', '+091800');
-$tz_array['Australia/Canberra'] = array('+1100', '+1000');
-$tz_array['Australia/Darwin'] = array('+091800', '+091800');
-$tz_array['Australia/Hobart'] = array('+1100', '+1000');
-$tz_array['Australia/LHI'] = array('+1100', '+101800');
-$tz_array['Australia/Lindeman'] = array('+1000', '+1000');
-$tz_array['Australia/Lord_Howe'] = array('+1100', '+101800');
-$tz_array['Australia/Melbourne'] = array('+1000', '+1100');
-$tz_array['Australia/NSW'] = array('+1000', '+1100');
-$tz_array['Australia/North'] = array('+091800', '+091800');
-$tz_array['Australia/Perth'] = array('+0800', '+0800');
-$tz_array['Australia/Queensland'] = array('+1000', '+1000');
-$tz_array['Australia/South'] = array('+101800', '+091800');
-$tz_array['Australia/Sydney'] = array('+1000', '+1100');
-$tz_array['Australia/Tasmania'] = array('+1000', '+1100');
-$tz_array['Australia/Victoria'] = array('+1000', '+1100');
-$tz_array['Australia/West'] = array('+0800', '+0800');
-$tz_array['Australia/Yancowinna'] = array('+101800', '+091800');
-$tz_array['Brazil/Acre'] = array('-0500', '-0500');
-$tz_array['Brazil/DeNoronha'] = array('-0200', '-0200');
-$tz_array['Brazil/East'] = array('-0200', '-0300');
-$tz_array['Brazil/West'] = array('-0400', '-0400');
-$tz_array['CET'] = array('+0100', '+0200');
-$tz_array['CST6CDT'] = array('-0600', '-0500');
-$tz_array['Canada/Atlantic'] = array('-0400', '-0300');
-$tz_array['Canada/Central'] = array('-0600', '-0500');
-$tz_array['Canada/East-Saskatchewan'] = array('-0600', '-0600');
-$tz_array['Canada/Eastern'] = array('-0500', '-0400');
-$tz_array['Canada/Mountain'] = array('-0700', '-0600');
-$tz_array['Canada/Newfoundland'] = array('-031800', '-021800');
-$tz_array['Canada/Pacific'] = array('-0800', '-0700');
-$tz_array['Canada/Saskatchewan'] = array('-0600', '-0600');
-$tz_array['Canada/Yukon'] = array('-0800', '-0700');
-$tz_array['Chile/Continental'] = array('-0300', '-0400');
-$tz_array['Chile/EasterIsland'] = array('-0500', '-0600');
-$tz_array['Cuba'] = array('-0500', '-0400');
-$tz_array['EET'] = array('+0200', '+0300');
-$tz_array['EST'] = array('-0500', '-0500');
-$tz_array['EST5EDT'] = array('-0500', '-0400');
-$tz_array['Egypt'] = array('+0200', '+0300');
-$tz_array['Eire'] = array('+0000', '+0100');
-$tz_array['Etc/GMT+1'] = array('-0100', '-0100');
-$tz_array['Etc/GMT+10'] = array('-1000', '-1000');
-$tz_array['Etc/GMT+11'] = array('-1100', '-1100');
-$tz_array['Etc/GMT+12'] = array('-1200', '-1200');
-$tz_array['Etc/GMT+2'] = array('-0200', '-0200');
-$tz_array['Etc/GMT+3'] = array('-0300', '-0300');
-$tz_array['Etc/GMT+4'] = array('-0400', '-0400');
-$tz_array['Etc/GMT+5'] = array('-0500', '-0500');
-$tz_array['Etc/GMT+6'] = array('-0600', '-0600');
-$tz_array['Etc/GMT+7'] = array('-0700', '-0700');
-$tz_array['Etc/GMT+8'] = array('-0800', '-0800');
-$tz_array['Etc/GMT+9'] = array('-0900', '-0900');
-$tz_array['Etc/GMT-1'] = array('+0100', '+0100');
-$tz_array['Etc/GMT-10'] = array('+1000', '+1000');
-$tz_array['Etc/GMT-11'] = array('+1100', '+1100');
-$tz_array['Etc/GMT-12'] = array('+1200', '+1200');
-$tz_array['Etc/GMT-13'] = array('+1300', '+1300');
-$tz_array['Etc/GMT-14'] = array('+1400', '+1400');
-$tz_array['Etc/GMT-2'] = array('+0200', '+0200');
-$tz_array['Etc/GMT-3'] = array('+0300', '+0300');
-$tz_array['Etc/GMT-4'] = array('+0400', '+0400');
-$tz_array['Etc/GMT-5'] = array('+0500', '+0500');
-$tz_array['Etc/GMT-6'] = array('+0600', '+0600');
-$tz_array['Etc/GMT-7'] = array('+0700', '+0700');
-$tz_array['Etc/GMT-8'] = array('+0800', '+0800');
-$tz_array['Etc/GMT-9'] = array('+0900', '+0900');
-$tz_array['Europe/Amsterdam'] = array('+0100', '+0200');
-$tz_array['Europe/Andorra'] = array('+0100', '+0200');
-$tz_array['Europe/Athens'] = array('+0200', '+0300');
-$tz_array['Europe/Belfast'] = array('+0000', '+0100');
-$tz_array['Europe/Belgrade'] = array('+0100', '+0200');
-$tz_array['Europe/Berlin'] = array('+0100', '+0200');
-$tz_array['Europe/Bratislava'] = array('+0100', '+0200');
-$tz_array['Europe/Brussels'] = array('+0100', '+0200');
-$tz_array['Europe/Bucharest'] = array('+0200', '+0300');
-$tz_array['Europe/Budapest'] = array('+0100', '+0200');
-$tz_array['Europe/Chisinau'] = array('+0200', '+0300');
-$tz_array['Europe/Copenhagen'] = array('+0100', '+0200');
-$tz_array['Europe/Dublin'] = array('+0000', '+0100');
-$tz_array['Europe/Gibraltar'] = array('+0100', '+0200');
-$tz_array['Europe/Helsinki'] = array('+0200', '+0300');
-$tz_array['Europe/Istanbul'] = array('+0200', '+0300');
-$tz_array['Europe/Kaliningrad'] = array('+0200', '+0300');
-$tz_array['Europe/Kiev'] = array('+0200', '+0300');
-$tz_array['Europe/Lisbon'] = array('+0000', '+0100');
-$tz_array['Europe/Ljubljana'] = array('+0100', '+0200');
-$tz_array['Europe/London'] = array('+0000', '+0100');
-$tz_array['Europe/Luxembourg'] = array('+0100', '+0200');
-$tz_array['Europe/Madrid'] = array('+0100', '+0200');
-$tz_array['Europe/Malta'] = array('+0100', '+0200');
-$tz_array['Europe/Minsk'] = array('+0200', '+0300');
-$tz_array['Europe/Monaco'] = array('+0100', '+0200');
-$tz_array['Europe/Moscow'] = array('+0300', '+0400');
-$tz_array['Europe/Nicosia'] = array('+0200', '+0300');
-$tz_array['Europe/Oslo'] = array('+0100', '+0200');
-$tz_array['Europe/Paris'] = array('+0100', '+0200');
-$tz_array['Europe/Prague'] = array('+0100', '+0200');
-$tz_array['Europe/Riga'] = array('+0200', '+0300');
-$tz_array['Europe/Rome'] = array('+0100', '+0200');
-$tz_array['Europe/Samara'] = array('+0400', '+0500');
-$tz_array['Europe/San_Marino'] = array('+0100', '+0200');
-$tz_array['Europe/Sarajevo'] = array('+0100', '+0200');
-$tz_array['Europe/Simferopol'] = array('+0200', '+0300');
-$tz_array['Europe/Skopje'] = array('+0100', '+0200');
-$tz_array['Europe/Sofia'] = array('+0200', '+0300');
-$tz_array['Europe/Stockholm'] = array('+0100', '+0200');
-$tz_array['Europe/Tallinn'] = array('+0200', '+0200');
-$tz_array['Europe/Tirane'] = array('+0100', '+0200');
-$tz_array['Europe/Tiraspol'] = array('+0200', '+0300');
-$tz_array['Europe/Uzhgorod'] = array('+0200', '+0300');
-$tz_array['Europe/Vaduz'] = array('+0100', '+0200');
-$tz_array['Europe/Vatican'] = array('+0100', '+0200');
-$tz_array['Europe/Vienna'] = array('+0100', '+0200');
-$tz_array['Europe/Vilnius'] = array('+0200', '+0200');
-$tz_array['Europe/Warsaw'] = array('+0100', '+0200');
-$tz_array['Europe/Zagreb'] = array('+0100', '+0200');
-$tz_array['Europe/Zaporozhye'] = array('+0200', '+0300');
-$tz_array['Europe/Zurich'] = array('+0100', '+0200');
-$tz_array['GB'] = array('+0000', '+0100');
-$tz_array['GB-Eire'] = array('+0000', '+0100');
-$tz_array['HST'] = array('-1000', '-1000');
-$tz_array['Hongkong'] = array('+0800', '+0800');
-$tz_array['Indian/Antananarivo'] = array('+0300', '+0300');
-$tz_array['Indian/Chagos'] = array('+0500', '+0500');
-$tz_array['Indian/Christmas'] = array('+0700', '+0700');
-$tz_array['Indian/Cocos'] = array('+061800', '+061800');
-$tz_array['Indian/Comoro'] = array('+0300', '+0300');
-$tz_array['Indian/Kerguelen'] = array('+0500', '+0500');
-$tz_array['Indian/Mahe'] = array('+0400', '+0400');
-$tz_array['Indian/Maldives'] = array('+0500', '+0500');
-$tz_array['Indian/Mauritius'] = array('+0400', '+0400');
-$tz_array['Indian/Mayotte'] = array('+0300', '+0300');
-$tz_array['Indian/Reunion'] = array('+0400', '+0400');
-$tz_array['Iran'] = array('+031800', '+041800');
-$tz_array['Israel'] = array('+0200', '+0300');
-$tz_array['Jamaica'] = array('-0500', '-0500');
-$tz_array['Japan'] = array('+0900', '+0900');
-$tz_array['Kwajalein'] = array('+1200', '+1200');
-$tz_array['Libya'] = array('+0200', '+0200');
-$tz_array['MET'] = array('+0100', '+0200');
-$tz_array['MST'] = array('-0700', '-0700');
-$tz_array['MST7MDT'] = array('-0700', '-0600');
-$tz_array['Mexico/BajaNorte'] = array('-0800', '-0700');
-$tz_array['Mexico/BajaSur'] = array('-0700', '-0600');
-$tz_array['Mexico/General'] = array('-0600', '-0500');
-$tz_array['Mideast/Riyadh87'] = array('+03424', '+03424');
-$tz_array['Mideast/Riyadh88'] = array('+03424', '+03424');
-$tz_array['Mideast/Riyadh89'] = array('+03424', '+03424');
-$tz_array['NZ'] = array('+1300', '+1200');
-$tz_array['NZ-CHAT'] = array('+132700', '+122700');
-$tz_array['Navajo'] = array('-0700', '-0600');
-$tz_array['PRC'] = array('+0800', '+0800');
-$tz_array['PST8PDT'] = array('-0800', '-0700');
-$tz_array['Pacific/Apia'] = array('-1100', '-1100');
-$tz_array['Pacific/Auckland'] = array('+1300', '+1200');
-$tz_array['Pacific/Chatham'] = array('+132700', '+122700');
-$tz_array['Pacific/Easter'] = array('-0500', '-0600');
-$tz_array['Pacific/Efate'] = array('+1100', '+1100');
-$tz_array['Pacific/Enderbury'] = array('+1300', '+1300');
-$tz_array['Pacific/Fakaofo'] = array('-1000', '-1000');
-$tz_array['Pacific/Fiji'] = array('+1200', '+1200');
-$tz_array['Pacific/Funafuti'] = array('+1200', '+1200');
-$tz_array['Pacific/Galapagos'] = array('-0600', '-0600');
-$tz_array['Pacific/Gambier'] = array('-0900', '-0900');
-$tz_array['Pacific/Guadalcanal'] = array('+1100', '+1100');
-$tz_array['Pacific/Guam'] = array('+1000', '+1000');
-$tz_array['Pacific/Honolulu'] = array('-1000', '-1000');
-$tz_array['Pacific/Johnston'] = array('-1000', '-1000');
-$tz_array['Pacific/Kiritimati'] = array('+1400', '+1400');
-$tz_array['Pacific/Kosrae'] = array('+1100', '+1100');
-$tz_array['Pacific/Kwajalein'] = array('+1200', '+1200');
-$tz_array['Pacific/Majuro'] = array('+1200', '+1200');
-$tz_array['Pacific/Marquesas'] = array('-091800', '-091800');
-$tz_array['Pacific/Midway'] = array('-1100', '-1100');
-$tz_array['Pacific/Nauru'] = array('+1200', '+1200');
-$tz_array['Pacific/Niue'] = array('-1100', '-1100');
-$tz_array['Pacific/Norfolk'] = array('+111800', '+111800');
-$tz_array['Pacific/Noumea'] = array('+1100', '+1100');
-$tz_array['Pacific/Pago_Pago'] = array('-1100', '-1100');
-$tz_array['Pacific/Palau'] = array('+0900', '+0900');
-$tz_array['Pacific/Pitcairn'] = array('-0800', '-0800');
-$tz_array['Pacific/Ponape'] = array('+1100', '+1100');
-$tz_array['Pacific/Port_Moresby'] = array('+1000', '+1000');
-$tz_array['Pacific/Rarotonga'] = array('-1000', '-1000');
-$tz_array['Pacific/Saipan'] = array('+1000', '+1000');
-$tz_array['Pacific/Samoa'] = array('-1100', '-1100');
-$tz_array['Pacific/Tahiti'] = array('-1000', '-1000');
-$tz_array['Pacific/Tarawa'] = array('+1200', '+1200');
-$tz_array['Pacific/Tongatapu'] = array('+1300', '+1300');
-$tz_array['Pacific/Truk'] = array('+1000', '+1000');
-$tz_array['Pacific/Wake'] = array('+1200', '+1200');
-$tz_array['Pacific/Wallis'] = array('+1200', '+1200');
-$tz_array['Pacific/Yap'] = array('+1000', '+1000');
-$tz_array['Poland'] = array('+0100', '+0200');
-$tz_array['Portugal'] = array('+0000', '+0100');
-$tz_array['ROC'] = array('+0800', '+0800');
-$tz_array['ROK'] = array('+0900', '+0900');
-$tz_array['Singapore'] = array('+0800', '+0800');
-$tz_array['SystemV/AST4'] = array('-0400', '-0400');
-$tz_array['SystemV/AST4ADT'] = array('-0400', '-0300');
-$tz_array['SystemV/CST6'] = array('-0600', '-0600');
-$tz_array['SystemV/CST6CDT'] = array('-0600', '-0500');
-$tz_array['SystemV/EST5'] = array('-0500', '-0500');
-$tz_array['SystemV/EST5EDT'] = array('-0500', '-0400');
-$tz_array['SystemV/HST10'] = array('-1000', '-1000');
-$tz_array['SystemV/MST7'] = array('-0700', '-0700');
-$tz_array['SystemV/MST7MDT'] = array('-0700', '-0600');
-$tz_array['SystemV/PST8'] = array('-0800', '-0800');
-$tz_array['SystemV/PST8PDT'] = array('-0800', '-0700');
-$tz_array['SystemV/YST9'] = array('-0900', '-0900');
-$tz_array['SystemV/YST9YDT'] = array('-0900', '-0800');
-$tz_array['Turkey'] = array('+0200', '+0300');
-$tz_array['US/Alaska'] = array('-0900', '-0800');
-$tz_array['US/Aleutian'] = array('-1000', '-0900');
-$tz_array['US/Arizona'] = array('-0700', '-0700');
-$tz_array['US/Central'] = array('-0600', '-0500');
-$tz_array['US/East-Indiana'] = array('-0500', '-0500');
-$tz_array['US/Eastern'] = array('-0500', '-0400');
-$tz_array['US/Hawaii'] = array('-1000', '-1000');
-$tz_array['US/Indiana-Starke'] = array('-0500', '-0500');
-$tz_array['US/Michigan'] = array('-0500', '-0400');
-$tz_array['US/Mountain'] = array('-0700', '-0600');
-$tz_array['US/Pacific'] = array('-0800', '-0700');
-$tz_array['US/Samoa'] = array('-1100', '-1100');
-$tz_array['W-SU'] = array('+0300', '+0400');
-$tz_array['WET'] = array('+0000', '+0100');
+/* values are offset in hhmm (not seconds!) relative to GMT
+ The first value is for standard, and the second value is for daylight
+*/
+$tz_array['Africa/Addis_Ababa'] = array('+0300', '+0300');
+$tz_array['Africa/Algiers'] = array('+0100', '+0100');
+$tz_array['Africa/Asmera'] = array('+0300', '+0300');
+$tz_array['Africa/Bangui'] = array('+0100', '+0100');
+$tz_array['Africa/Blantyre'] = array('+0200', '+0200');
+$tz_array['Africa/Brazzaville'] = array('+0100', '+0100');
+$tz_array['Africa/Bujumbura'] = array('+0200', '+0200');
+$tz_array['Africa/Cairo'] = array('+0200', '+0300');
+$tz_array['Africa/Ceuta'] = array('+0100', '+0200');
+$tz_array['Africa/Dar_es_Salaam'] = array('+0300', '+0300');
+$tz_array['Africa/Djibouti'] = array('+0300', '+0300');
+$tz_array['Africa/Douala'] = array('+0100', '+0100');
+$tz_array['Africa/Gaborone'] = array('+0200', '+0200');
+$tz_array['Africa/Harare'] = array('+0200', '+0200');
+$tz_array['Africa/Johannesburg'] = array('+0200', '+0200');
+$tz_array['Africa/Kampala'] = array('+0300', '+0300');
+$tz_array['Africa/Khartoum'] = array('+0300', '+0300');
+$tz_array['Africa/Kigali'] = array('+0200', '+0200');
+$tz_array['Africa/Kinshasa'] = array('+0100', '+0100');
+$tz_array['Africa/Lagos'] = array('+0100', '+0100');
+$tz_array['Africa/Libreville'] = array('+0100', '+0100');
+$tz_array['Africa/Luanda'] = array('+0100', '+0100');
+$tz_array['Africa/Lubumbashi'] = array('+0200', '+0200');
+$tz_array['Africa/Lusaka'] = array('+0200', '+0200');
+$tz_array['Africa/Malabo'] = array('+0100', '+0100');
+$tz_array['Africa/Maputo'] = array('+0200', '+0200');
+$tz_array['Africa/Maseru'] = array('+0200', '+0200');
+$tz_array['Africa/Mbabane'] = array('+0200', '+0200');
+$tz_array['Africa/Mogadishu'] = array('+0300', '+0300');
+$tz_array['Africa/Nairobi'] = array('+0300', '+0300');
+$tz_array['Africa/Ndjamena'] = array('+0100', '+0100');
+$tz_array['Africa/Niamey'] = array('+0100', '+0100');
+$tz_array['Africa/Porto-Novo'] = array('+0100', '+0100');
+$tz_array['Africa/Tripoli'] = array('+0200', '+0200');
+$tz_array['Africa/Tunis'] = array('+0100', '+0100');
+$tz_array['Africa/Windhoek'] = array('+0200', '+0100');
+$tz_array['America/Adak'] = array('-1000', '-0900');
+$tz_array['America/Anchorage'] = array('-0900', '-0800');
+$tz_array['America/Anguilla'] = array('-0400', '-0400');
+$tz_array['America/Antigua'] = array('-0400', '-0400');
+$tz_array['America/Araguaina'] = array('-0200', '-0300');
+$tz_array['America/Aruba'] = array('-0400', '-0400');
+$tz_array['America/Asuncion'] = array('-0300', '-0400');
+$tz_array['America/Atka'] = array('-1000', '-0900');
+$tz_array['America/Barbados'] = array('-0400', '-0400');
+$tz_array['America/Belem'] = array('-0300', '-0300');
+$tz_array['America/Belize'] = array('-0600', '-0600');
+$tz_array['America/Boa_Vista'] = array('-0400', '-0400');
+$tz_array['America/Bogota'] = array('-0500', '-0500');
+$tz_array['America/Boise'] = array('-0700', '-0600');
+$tz_array['America/Buenos_Aires'] = array('-0300', '-0300');
+$tz_array['America/Cambridge_Bay'] = array('-0700', '-0600');
+$tz_array['America/Cancun'] = array('-0600', '-0500');
+$tz_array['America/Caracas'] = array('-0400', '-0400');
+$tz_array['America/Catamarca'] = array('-0300', '-0300');
+$tz_array['America/Cayenne'] = array('-0300', '-0300');
+$tz_array['America/Cayman'] = array('-0500', '-0500');
+$tz_array['America/Chicago'] = array('-0600', '-0500');
+$tz_array['America/Chihuahua'] = array('-0700', '-0600');
+$tz_array['America/Cordoba'] = array('-0300', '-0300');
+$tz_array['America/Costa_Rica'] = array('-0600', '-0600');
+$tz_array['America/Cuiaba'] = array('-0300', '-0400');
+$tz_array['America/Curacao'] = array('-0400', '-0400');
+$tz_array['America/Dawson'] = array('-0800', '-0700');
+$tz_array['America/Dawson_Creek'] = array('-0700', '-0700');
+$tz_array['America/Denver'] = array('-0700', '-0600');
+$tz_array['America/Detroit'] = array('-0500', '-0400');
+$tz_array['America/Dominica'] = array('-0400', '-0400');
+$tz_array['America/Edmonton'] = array('-0700', '-0600');
+$tz_array['America/Eirunepe'] = array('-0500', '-0500');
+$tz_array['America/El_Salvador'] = array('-0600', '-0600');
+$tz_array['America/Ensenada'] = array('-0800', '-0700');
+$tz_array['America/Fort_Wayne'] = array('-0500', '-0500');
+$tz_array['America/Fortaleza'] = array('-0300', '-0300');
+$tz_array['America/Glace_Bay'] = array('-0400', '-0300');
+$tz_array['America/Godthab'] = array('-0300', '-0200');
+$tz_array['America/Goose_Bay'] = array('-0400', '-0300');
+$tz_array['America/Grand_Turk'] = array('-0500', '-0400');
+$tz_array['America/Grenada'] = array('-0400', '-0400');
+$tz_array['America/Guadeloupe'] = array('-0400', '-0400');
+$tz_array['America/Guatemala'] = array('-0600', '-0600');
+$tz_array['America/Guayaquil'] = array('-0500', '-0500');
+$tz_array['America/Guyana'] = array('-0400', '-0400');
+$tz_array['America/Halifax'] = array('-0400', '-0300');
+$tz_array['America/Havana'] = array('-0500', '-0400');
+$tz_array['America/Hermosillo'] = array('-0700', '-0700');
+$tz_array['America/Indiana/Indianapolis'] = array('-0500', '-0500');
+$tz_array['America/Indiana/Knox'] = array('-0500', '-0500');
+$tz_array['America/Indiana/Marengo'] = array('-0500', '-0500');
+$tz_array['America/Indiana/Vevay'] = array('-0500', '-0500');
+$tz_array['America/Indianapolis'] = array('-0500', '-0500');
+$tz_array['America/Inuvik'] = array('-0700', '-0600');
+$tz_array['America/Iqaluit'] = array('-0500', '-0400');
+$tz_array['America/Jamaica'] = array('-0500', '-0500');
+$tz_array['America/Jujuy'] = array('-0300', '-0300');
+$tz_array['America/Juneau'] = array('-0900', '-0800');
+$tz_array['America/Kentucky/Louisville'] = array('-0500', '-0400');
+$tz_array['America/Kentucky/Monticello'] = array('-0500', '-0400');
+$tz_array['America/Knox_IN'] = array('-0500', '-0500');
+$tz_array['America/La_Paz'] = array('-0400', '-0400');
+$tz_array['America/Lima'] = array('-0500', '-0500');
+$tz_array['America/Los_Angeles'] = array('-0800', '-0700');
+$tz_array['America/Louisville'] = array('-0500', '-0400');
+$tz_array['America/Maceio'] = array('-0300', '-0300');
+$tz_array['America/Managua'] = array('-0600', '-0600');
+$tz_array['America/Manaus'] = array('-0400', '-0400');
+$tz_array['America/Martinique'] = array('-0400', '-0400');
+$tz_array['America/Mazatlan'] = array('-0700', '-0600');
+$tz_array['America/Mendoza'] = array('-0300', '-0300');
+$tz_array['America/Menominee'] = array('-0600', '-0500');
+$tz_array['America/Merida'] = array('-0600', '-0500');
+$tz_array['America/Mexico_City'] = array('-0600', '-0500');
+$tz_array['America/Miquelon'] = array('-0300', '-0200');
+$tz_array['America/Monterrey'] = array('-0600', '-0500');
+$tz_array['America/Montevideo'] = array('-0300', '-0300');
+$tz_array['America/Montreal'] = array('-0500', '-0400');
+$tz_array['America/Montserrat'] = array('-0400', '-0400');
+$tz_array['America/Nassau'] = array('-0500', '-0400');
+$tz_array['America/New_York'] = array('-0500', '-0400');
+$tz_array['America/Nipigon'] = array('-0500', '-0400');
+$tz_array['America/Nome'] = array('-0900', '-0800');
+$tz_array['America/Noronha'] = array('-0200', '-0200');
+$tz_array['America/Panama'] = array('-0500', '-0500');
+$tz_array['America/Pangnirtung'] = array('-0500', '-0400');
+$tz_array['America/Paramaribo'] = array('-0300', '-0300');
+$tz_array['America/Phoenix'] = array('-0700', '-0700');
+$tz_array['America/Port-au-Prince'] = array('-0500', '-0500');
+$tz_array['America/Port_of_Spain'] = array('-0400', '-0400');
+$tz_array['America/Porto_Acre'] = array('-0500', '-0500');
+$tz_array['America/Porto_Velho'] = array('-0400', '-0400');
+$tz_array['America/Puerto_Rico'] = array('-0400', '-0400');
+$tz_array['America/Rainy_River'] = array('-0600', '-0500');
+$tz_array['America/Rankin_Inlet'] = array('-0600', '-0500');
+$tz_array['America/Recife'] = array('-0300', '-0300');
+$tz_array['America/Regina'] = array('-0600', '-0600');
+$tz_array['America/Rio_Branco'] = array('-0500', '-0500');
+$tz_array['America/Rosario'] = array('-0300', '-0300');
+$tz_array['America/Santiago'] = array('-0300', '-0400');
+$tz_array['America/Santo_Domingo'] = array('-0400', '-0400');
+$tz_array['America/Sao_Paulo'] = array('-0200', '-0300');
+$tz_array['America/Scoresbysund'] = array('-0100', '+0000');
+$tz_array['America/Shiprock'] = array('-0700', '-0600');
+$tz_array['America/St_Johns'] = array('-0330', '-0230');
+$tz_array['America/St_Kitts'] = array('-0400', '-0400');
+$tz_array['America/St_Lucia'] = array('-0400', '-0400');
+$tz_array['America/St_Thomas'] = array('-0400', '-0400');
+$tz_array['America/St_Vincent'] = array('-0400', '-0400');
+$tz_array['America/Swift_Current'] = array('-0600', '-0600');
+$tz_array['America/Tegucigalpa'] = array('-0600', '-0600');
+$tz_array['America/Thule'] = array('-0400', '-0300');
+$tz_array['America/Thunder_Bay'] = array('-0500', '-0400');
+$tz_array['America/Tijuana'] = array('-0800', '-0700');
+$tz_array['America/Tortola'] = array('-0400', '-0400');
+$tz_array['America/Vancouver'] = array('-0800', '-0700');
+$tz_array['America/Virgin'] = array('-0400', '-0400');
+$tz_array['America/Whitehorse'] = array('-0800', '-0700');
+$tz_array['America/Winnipeg'] = array('-0600', '-0500');
+$tz_array['America/Yakutat'] = array('-0900', '-0800');
+$tz_array['America/Yellowknife'] = array('-0700', '-0600');
+$tz_array['Antarctica/Casey'] = array('+0800', '+0800');
+$tz_array['Antarctica/Davis'] = array('+0700', '+0700');
+$tz_array['Antarctica/DumontDUrville'] = array('+1000', '+1000');
+$tz_array['Antarctica/Mawson'] = array('+0600', '+0600');
+$tz_array['Antarctica/McMurdo'] = array('+1300', '+1200');
+$tz_array['Antarctica/Palmer'] = array('-0300', '-0400');
+$tz_array['Antarctica/South_Pole'] = array('+1300', '+1200');
+$tz_array['Antarctica/Syowa'] = array('+0300', '+0300');
+$tz_array['Antarctica/Vostok'] = array('+0600', '+0600');
+$tz_array['Arctic/Longyearbyen'] = array('+0100', '+0200');
+$tz_array['Asia/Aden'] = array('+0300', '+0300');
+$tz_array['Asia/Almaty'] = array('+0600', '+0700');
+$tz_array['Asia/Amman'] = array('+0200', '+0300');
+$tz_array['Asia/Anadyr'] = array('+1200', '+1300');
+$tz_array['Asia/Aqtau'] = array('+0400', '+0500');
+$tz_array['Asia/Aqtobe'] = array('+0500', '+0600');
+$tz_array['Asia/Ashgabat'] = array('+0500', '+0500');
+$tz_array['Asia/Ashkhabad'] = array('+0500', '+0500');
+$tz_array['Asia/Baghdad'] = array('+0300', '+0400');
+$tz_array['Asia/Bahrain'] = array('+0300', '+0300');
+$tz_array['Asia/Baku'] = array('+0400', '+0500');
+$tz_array['Asia/Bangkok'] = array('+0700', '+0700');
+$tz_array['Asia/Beirut'] = array('+0200', '+0300');
+$tz_array['Asia/Bishkek'] = array('+0500', '+0600');
+$tz_array['Asia/Brunei'] = array('+0800', '+0800');
+$tz_array['Asia/Calcutta'] = array('+0530', '+0530');
+$tz_array['Asia/Chungking'] = array('+0800', '+0800');
+$tz_array['Asia/Colombo'] = array('+0600', '+0600');
+$tz_array['Asia/Dacca'] = array('+0600', '+0600');
+$tz_array['Asia/Damascus'] = array('+0200', '+0300');
+$tz_array['Asia/Dhaka'] = array('+0600', '+0600');
+$tz_array['Asia/Dili'] = array('+0900', '+0900');
+$tz_array['Asia/Dubai'] = array('+0400', '+0400');
+$tz_array['Asia/Dushanbe'] = array('+0500', '+0500');
+$tz_array['Asia/Gaza'] = array('+0200', '+0300');
+$tz_array['Asia/Harbin'] = array('+0800', '+0800');
+$tz_array['Asia/Hong_Kong'] = array('+0800', '+0800');
+$tz_array['Asia/Hovd'] = array('+0700', '+0700');
+$tz_array['Asia/Irkutsk'] = array('+0800', '+0900');
+$tz_array['Asia/Istanbul'] = array('+0200', '+0300');
+$tz_array['Asia/Jakarta'] = array('+0700', '+0700');
+$tz_array['Asia/Jayapura'] = array('+0900', '+0900');
+$tz_array['Asia/Jerusalem'] = array('+0200', '+0300');
+$tz_array['Asia/Kabul'] = array('+0430', '+0430');
+$tz_array['Asia/Kamchatka'] = array('+1200', '+1300');
+$tz_array['Asia/Karachi'] = array('+0500', '+0500');
+$tz_array['Asia/Kashgar'] = array('+0800', '+0800');
+$tz_array['Asia/Katmandu'] = array('+0545', '+0545');
+$tz_array['Asia/Kolkata'] = array('+0530', '+0530');
+$tz_array['Asia/Krasnoyarsk'] = array('+0700', '+0800');
+$tz_array['Asia/Kuala_Lumpur'] = array('+0800', '+0800');
+$tz_array['Asia/Kuching'] = array('+0800', '+0800');
+$tz_array['Asia/Kuwait'] = array('+0300', '+0300');
+$tz_array['Asia/Macao'] = array('+0800', '+0800');
+$tz_array['Asia/Magadan'] = array('+1100', '+1200');
+$tz_array['Asia/Manila'] = array('+0800', '+0800');
+$tz_array['Asia/Muscat'] = array('+0400', '+0400');
+$tz_array['Asia/Nicosia'] = array('+0200', '+0300');
+$tz_array['Asia/Novosibirsk'] = array('+0600', '+0700');
+$tz_array['Asia/Omsk'] = array('+0600', '+0700');
+$tz_array['Asia/Phnom_Penh'] = array('+0700', '+0700');
+$tz_array['Asia/Pyongyang'] = array('+0900', '+0900');
+$tz_array['Asia/Qatar'] = array('+0300', '+0300');
+$tz_array['Asia/Rangoon'] = array('+0630', '+0630');
+$tz_array['Asia/Riyadh'] = array('+0300', '+0300');
+$tz_array['Asia/Riyadh'] = array('+0300', '+0300');
+$tz_array['Asia/Saigon'] = array('+0700', '+0700');
+$tz_array['Asia/Samarkand'] = array('+0500', '+0500');
+$tz_array['Asia/Seoul'] = array('+0900', '+0900');
+$tz_array['Asia/Shanghai'] = array('+0800', '+0800');
+$tz_array['Asia/Singapore'] = array('+0800', '+0800');
+$tz_array['Asia/Taipei'] = array('+0800', '+0800');
+$tz_array['Asia/Tashkent'] = array('+0500', '+0500');
+$tz_array['Asia/Tbilisi'] = array('+0400', '+0500');
+$tz_array['Asia/Tehran'] = array('+0330', '+0430');
+$tz_array['Asia/Tel_Aviv'] = array('+0200', '+0300');
+$tz_array['Asia/Thimbu'] = array('+0600', '+0600');
+$tz_array['Asia/Thimphu'] = array('+0600', '+0600');
+$tz_array['Asia/Tokyo'] = array('+0900', '+0900');
+$tz_array['Asia/Ujung_Pandang'] = array('+0800', '+0800');
+$tz_array['Asia/Ulaanbaatar'] = array('+0800', '+0800');
+$tz_array['Asia/Ulan_Bator'] = array('+0800', '+0800');
+$tz_array['Asia/Urumqi'] = array('+0800', '+0800');
+$tz_array['Asia/Vientiane'] = array('+0700', '+0700');
+$tz_array['Asia/Vladivostok'] = array('+1000', '+1100');
+$tz_array['Asia/Yakutsk'] = array('+0900', '+1000');
+$tz_array['Asia/Yekaterinburg'] = array('+0500', '+0600');
+$tz_array['Asia/Yerevan'] = array('+0400', '+0500');
+$tz_array['Atlantic/Azores'] = array('-0100', '+0000');
+$tz_array['Atlantic/Bermuda'] = array('-0400', '-0300');
+$tz_array['Atlantic/Canary'] = array('+0000', '+0100');
+$tz_array['Atlantic/Cape_Verde'] = array('-0100', '-0100');
+$tz_array['Atlantic/Faeroe'] = array('+0000', '+0100');
+$tz_array['Atlantic/Jan_Mayen'] = array('-0100', '-0100');
+$tz_array['Atlantic/Madeira'] = array('+0000', '+0100');
+$tz_array['Atlantic/South_Georgia'] = array('-0200', '-0200');
+$tz_array['Atlantic/Stanley'] = array('-0300', '-0400');
+$tz_array['Australia/ACT'] = array('+1000', '+1100');
+$tz_array['Australia/Adelaide'] = array('+1030', '+0930');
+$tz_array['Australia/Brisbane'] = array('+1000', '+1000');
+$tz_array['Australia/Broken_Hill'] = array('+1030', '+0930');
+$tz_array['Australia/Canberra'] = array('+1100', '+1000');
+$tz_array['Australia/Darwin'] = array('+0930', '+0930');
+$tz_array['Australia/Hobart'] = array('+1100', '+1000');
+$tz_array['Australia/LHI'] = array('+1100', '+1030');
+$tz_array['Australia/Lindeman'] = array('+1000', '+1000');
+$tz_array['Australia/Lord_Howe'] = array('+1100', '+1030');
+$tz_array['Australia/Melbourne'] = array('+1000', '+1100');
+$tz_array['Australia/NSW'] = array('+1000', '+1100');
+$tz_array['Australia/North'] = array('+0930', '+0930');
+$tz_array['Australia/Perth'] = array('+0800', '+0800');
+$tz_array['Australia/Queensland'] = array('+1000', '+1000');
+$tz_array['Australia/South'] = array('+1030', '+0930');
+$tz_array['Australia/Sydney'] = array('+1000', '+1100');
+$tz_array['Australia/Tasmania'] = array('+1000', '+1100');
+$tz_array['Australia/Victoria'] = array('+1000', '+1100');
+$tz_array['Australia/West'] = array('+0800', '+0800');
+$tz_array['Australia/Yancowinna'] = array('+1030', '+0930');
+$tz_array['Brazil/Acre'] = array('-0500', '-0500');
+$tz_array['Brazil/DeNoronha'] = array('-0200', '-0200');
+$tz_array['Brazil/East'] = array('-0200', '-0300');
+$tz_array['Brazil/West'] = array('-0400', '-0400');
+$tz_array['CET'] = array('+0100', '+0200');
+$tz_array['CST6CDT'] = array('-0600', '-0500');
+$tz_array['Canada/Atlantic'] = array('-0400', '-0300');
+$tz_array['Canada/Central'] = array('-0600', '-0500');
+$tz_array['Canada/East-Saskatchewan'] = array('-0600', '-0600');
+$tz_array['Canada/Eastern'] = array('-0500', '-0400');
+$tz_array['Canada/Mountain'] = array('-0700', '-0600');
+$tz_array['Canada/Newfoundland'] = array('-0330', '-0230');
+$tz_array['Canada/Pacific'] = array('-0800', '-0700');
+$tz_array['Canada/Saskatchewan'] = array('-0600', '-0600');
+$tz_array['Canada/Yukon'] = array('-0800', '-0700');
+$tz_array['Chile/Continental'] = array('-0300', '-0400');
+$tz_array['Chile/EasterIsland'] = array('-0500', '-0600');
+$tz_array['Cuba'] = array('-0500', '-0400');
+$tz_array['EET'] = array('+0200', '+0300');
+$tz_array['EST'] = array('-0500', '-0500');
+$tz_array['EST5EDT'] = array('-0500', '-0400');
+$tz_array['Egypt'] = array('+0200', '+0300');
+$tz_array['Eire'] = array('+0000', '+0100');
+$tz_array['Etc/GMT+1'] = array('-0100', '-0100');
+$tz_array['Etc/GMT+10'] = array('-1000', '-1000');
+$tz_array['Etc/GMT+11'] = array('-1100', '-1100');
+$tz_array['Etc/GMT+12'] = array('-1200', '-1200');
+$tz_array['Etc/GMT+2'] = array('-0200', '-0200');
+$tz_array['Etc/GMT+3'] = array('-0300', '-0300');
+$tz_array['Etc/GMT+4'] = array('-0400', '-0400');
+$tz_array['Etc/GMT+5'] = array('-0500', '-0500');
+$tz_array['Etc/GMT+6'] = array('-0600', '-0600');
+$tz_array['Etc/GMT+7'] = array('-0700', '-0700');
+$tz_array['Etc/GMT+8'] = array('-0800', '-0800');
+$tz_array['Etc/GMT+9'] = array('-0900', '-0900');
+$tz_array['Etc/GMT-1'] = array('+0100', '+0100');
+$tz_array['Etc/GMT-10'] = array('+1000', '+1000');
+$tz_array['Etc/GMT-11'] = array('+1100', '+1100');
+$tz_array['Etc/GMT-12'] = array('+1200', '+1200');
+$tz_array['Etc/GMT-13'] = array('+1300', '+1300');
+$tz_array['Etc/GMT-14'] = array('+1400', '+1400');
+$tz_array['Etc/GMT-2'] = array('+0200', '+0200');
+$tz_array['Etc/GMT-3'] = array('+0300', '+0300');
+$tz_array['Etc/GMT-4'] = array('+0400', '+0400');
+$tz_array['Etc/GMT-5'] = array('+0500', '+0500');
+$tz_array['Etc/GMT-6'] = array('+0600', '+0600');
+$tz_array['Etc/GMT-7'] = array('+0700', '+0700');
+$tz_array['Etc/GMT-8'] = array('+0800', '+0800');
+$tz_array['Etc/GMT-9'] = array('+0900', '+0900');
+$tz_array['Europe/Amsterdam'] = array('+0100', '+0200');
+$tz_array['Europe/Andorra'] = array('+0100', '+0200');
+$tz_array['Europe/Athens'] = array('+0200', '+0300');
+$tz_array['Europe/Belfast'] = array('+0000', '+0100');
+$tz_array['Europe/Belgrade'] = array('+0100', '+0200');
+$tz_array['Europe/Berlin'] = array('+0100', '+0200');
+$tz_array['Europe/Bratislava'] = array('+0100', '+0200');
+$tz_array['Europe/Brussels'] = array('+0100', '+0200');
+$tz_array['Europe/Bucharest'] = array('+0200', '+0300');
+$tz_array['Europe/Budapest'] = array('+0100', '+0200');
+$tz_array['Europe/Chisinau'] = array('+0200', '+0300');
+$tz_array['Europe/Copenhagen'] = array('+0100', '+0200');
+$tz_array['Europe/Dublin'] = array('+0000', '+0100');
+$tz_array['Europe/Gibraltar'] = array('+0100', '+0200');
+$tz_array['Europe/Helsinki'] = array('+0200', '+0300');
+$tz_array['Europe/Istanbul'] = array('+0200', '+0300');
+$tz_array['Europe/Kaliningrad'] = array('+0200', '+0300');
+$tz_array['Europe/Kiev'] = array('+0200', '+0300');
+$tz_array['Europe/Lisbon'] = array('+0000', '+0100');
+$tz_array['Europe/Ljubljana'] = array('+0100', '+0200');
+$tz_array['Europe/London'] = array('+0000', '+0100');
+$tz_array['Europe/Luxembourg'] = array('+0100', '+0200');
+$tz_array['Europe/Madrid'] = array('+0100', '+0200');
+$tz_array['Europe/Malta'] = array('+0100', '+0200');
+$tz_array['Europe/Minsk'] = array('+0200', '+0300');
+$tz_array['Europe/Monaco'] = array('+0100', '+0200');
+$tz_array['Europe/Moscow'] = array('+0300', '+0400');
+$tz_array['Europe/Nicosia'] = array('+0200', '+0300');
+$tz_array['Europe/Oslo'] = array('+0100', '+0200');
+$tz_array['Europe/Paris'] = array('+0100', '+0200');
+$tz_array['Europe/Prague'] = array('+0100', '+0200');
+$tz_array['Europe/Riga'] = array('+0200', '+0300');
+$tz_array['Europe/Rome'] = array('+0100', '+0200');
+$tz_array['Europe/Samara'] = array('+0400', '+0500');
+$tz_array['Europe/San_Marino'] = array('+0100', '+0200');
+$tz_array['Europe/Sarajevo'] = array('+0100', '+0200');
+$tz_array['Europe/Simferopol'] = array('+0200', '+0300');
+$tz_array['Europe/Skopje'] = array('+0100', '+0200');
+$tz_array['Europe/Sofia'] = array('+0200', '+0300');
+$tz_array['Europe/Stockholm'] = array('+0100', '+0200');
+$tz_array['Europe/Tallinn'] = array('+0200', '+0200');
+$tz_array['Europe/Tirane'] = array('+0100', '+0200');
+$tz_array['Europe/Tiraspol'] = array('+0200', '+0300');
+$tz_array['Europe/Uzhgorod'] = array('+0200', '+0300');
+$tz_array['Europe/Vaduz'] = array('+0100', '+0200');
+$tz_array['Europe/Vatican'] = array('+0100', '+0200');
+$tz_array['Europe/Vienna'] = array('+0100', '+0200');
+$tz_array['Europe/Vilnius'] = array('+0200', '+0200');
+$tz_array['Europe/Warsaw'] = array('+0100', '+0200');
+$tz_array['Europe/Zagreb'] = array('+0100', '+0200');
+$tz_array['Europe/Zaporozhye'] = array('+0200', '+0300');
+$tz_array['Europe/Zurich'] = array('+0100', '+0200');
+$tz_array['GB'] = array('+0000', '+0100');
+$tz_array['GB-Eire'] = array('+0000', '+0100');
+$tz_array['HST'] = array('-1000', '-1000');
+$tz_array['Hongkong'] = array('+0800', '+0800');
+$tz_array['Indian/Antananarivo'] = array('+0300', '+0300');
+$tz_array['Indian/Chagos'] = array('+0500', '+0500');
+$tz_array['Indian/Christmas'] = array('+0700', '+0700');
+$tz_array['Indian/Cocos'] = array('+0630', '+0630');
+$tz_array['Indian/Comoro'] = array('+0300', '+0300');
+$tz_array['Indian/Kerguelen'] = array('+0500', '+0500');
+$tz_array['Indian/Mahe'] = array('+0400', '+0400');
+$tz_array['Indian/Maldives'] = array('+0500', '+0500');
+$tz_array['Indian/Mauritius'] = array('+0400', '+0400');
+$tz_array['Indian/Mayotte'] = array('+0300', '+0300');
+$tz_array['Indian/Reunion'] = array('+0400', '+0400');
+$tz_array['Iran'] = array('+0330', '+0430');
+$tz_array['Israel'] = array('+0200', '+0300');
+$tz_array['Jamaica'] = array('-0500', '-0500');
+$tz_array['Japan'] = array('+0900', '+0900');
+$tz_array['Kwajalein'] = array('+1200', '+1200');
+$tz_array['Libya'] = array('+0200', '+0200');
+$tz_array['MET'] = array('+0100', '+0200');
+$tz_array['MST'] = array('-0700', '-0700');
+$tz_array['MST7MDT'] = array('-0700', '-0600');
+$tz_array['Mexico/BajaNorte'] = array('-0800', '-0700');
+$tz_array['Mexico/BajaSur'] = array('-0700', '-0600');
+$tz_array['Mexico/General'] = array('-0600', '-0500');
+$tz_array['Mideast/Riyadh87'] = array('+0300', '+0300');
+$tz_array['Mideast/Riyadh88'] = array('+0300', '+0300');
+$tz_array['Mideast/Riyadh89'] = array('+0300', '+0300');
+$tz_array['NZ'] = array('+1300', '+1200');
+$tz_array['NZ-CHAT'] = array('+1345', '+1245');
+$tz_array['Navajo'] = array('-0700', '-0600');
+$tz_array['PRC'] = array('+0800', '+0800');
+$tz_array['PST8PDT'] = array('-0800', '-0700');
+$tz_array['Pacific/Apia'] = array('-1100', '-1100');
+$tz_array['Pacific/Auckland'] = array('+1300', '+1200');
+$tz_array['Pacific/Chatham'] = array('+1345', '+1245');
+$tz_array['Pacific/Easter'] = array('-0500', '-0600');
+$tz_array['Pacific/Efate'] = array('+1100', '+1100');
+$tz_array['Pacific/Enderbury'] = array('+1300', '+1300');
+$tz_array['Pacific/Fakaofo'] = array('-1000', '-1000');
+$tz_array['Pacific/Fiji'] = array('+1200', '+1200');
+$tz_array['Pacific/Funafuti'] = array('+1200', '+1200');
+$tz_array['Pacific/Galapagos'] = array('-0600', '-0600');
+$tz_array['Pacific/Gambier'] = array('-0900', '-0900');
+$tz_array['Pacific/Guadalcanal'] = array('+1100', '+1100');
+$tz_array['Pacific/Guam'] = array('+1000', '+1000');
+$tz_array['Pacific/Honolulu'] = array('-1000', '-1000');
+$tz_array['Pacific/Johnston'] = array('-1000', '-1000');
+$tz_array['Pacific/Kiritimati'] = array('+1400', '+1400');
+$tz_array['Pacific/Kosrae'] = array('+1100', '+1100');
+$tz_array['Pacific/Kwajalein'] = array('+1200', '+1200');
+$tz_array['Pacific/Majuro'] = array('+1200', '+1200');
+$tz_array['Pacific/Marquesas'] = array('-0930', '-0930');
+$tz_array['Pacific/Midway'] = array('-1100', '-1100');
+$tz_array['Pacific/Nauru'] = array('+1200', '+1200');
+$tz_array['Pacific/Niue'] = array('-1100', '-1100');
+$tz_array['Pacific/Norfolk'] = array('+1130', '+1130');
+$tz_array['Pacific/Noumea'] = array('+1100', '+1100');
+$tz_array['Pacific/Pago_Pago'] = array('-1100', '-1100');
+$tz_array['Pacific/Palau'] = array('+0900', '+0900');
+$tz_array['Pacific/Pitcairn'] = array('-0800', '-0800');
+$tz_array['Pacific/Ponape'] = array('+1100', '+1100');
+$tz_array['Pacific/Port_Moresby'] = array('+1000', '+1000');
+$tz_array['Pacific/Rarotonga'] = array('-1000', '-1000');
+$tz_array['Pacific/Saipan'] = array('+1000', '+1000');
+$tz_array['Pacific/Samoa'] = array('-1100', '-1100');
+$tz_array['Pacific/Tahiti'] = array('-1000', '-1000');
+$tz_array['Pacific/Tarawa'] = array('+1200', '+1200');
+$tz_array['Pacific/Tongatapu'] = array('+1300', '+1300');
+$tz_array['Pacific/Truk'] = array('+1000', '+1000');
+$tz_array['Pacific/Wake'] = array('+1200', '+1200');
+$tz_array['Pacific/Wallis'] = array('+1200', '+1200');
+$tz_array['Pacific/Yap'] = array('+1000', '+1000');
+$tz_array['Poland'] = array('+0100', '+0200');
+$tz_array['Portugal'] = array('+0000', '+0100');
+$tz_array['ROC'] = array('+0800', '+0800');
+$tz_array['ROK'] = array('+0900', '+0900');
+$tz_array['Singapore'] = array('+0800', '+0800');
+$tz_array['SystemV/AST4'] = array('-0400', '-0400');
+$tz_array['SystemV/AST4ADT'] = array('-0400', '-0300');
+$tz_array['SystemV/CST6'] = array('-0600', '-0600');
+$tz_array['SystemV/CST6CDT'] = array('-0600', '-0500');
+$tz_array['SystemV/EST5'] = array('-0500', '-0500');
+$tz_array['SystemV/EST5EDT'] = array('-0500', '-0400');
+$tz_array['SystemV/HST10'] = array('-1000', '-1000');
+$tz_array['SystemV/MST7'] = array('-0700', '-0700');
+$tz_array['SystemV/MST7MDT'] = array('-0700', '-0600');
+$tz_array['SystemV/PST8'] = array('-0800', '-0800');
+$tz_array['SystemV/PST8PDT'] = array('-0800', '-0700');
+$tz_array['SystemV/YST9'] = array('-0900', '-0900');
+$tz_array['SystemV/YST9YDT'] = array('-0900', '-0800');
+$tz_array['Turkey'] = array('+0200', '+0300');
+$tz_array['US/Alaska'] = array('-0900', '-0800');
+$tz_array['US/Aleutian'] = array('-1000', '-0900');
+$tz_array['US/Arizona'] = array('-0700', '-0700');
+$tz_array['US/Central'] = array('-0600', '-0500');
+$tz_array['US/East-Indiana'] = array('-0500', '-0500');
+$tz_array['US/Eastern'] = array('-0500', '-0400');
+$tz_array['US/Hawaii'] = array('-1000', '-1000');
+$tz_array['US/Indiana-Starke'] = array('-0500', '-0500');
+$tz_array['US/Michigan'] = array('-0500', '-0400');
+$tz_array['US/Mountain'] = array('-0700', '-0600');
+$tz_array['US/Pacific'] = array('-0800', '-0700');
+$tz_array['US/Samoa'] = array('-1100', '-1100');
+$tz_array['W-SU'] = array('+0300', '+0400');
+$tz_array['WET'] = array('+0000', '+0100');
?> \ No newline at end of file

© 2014-2024 Faster IT GmbH | imprint | privacy policy