[Zope3-checkins] SVN: Zope3/branches/3.4/src/pytz/ Removing the old pytz module to update with 2007f.

Christian Theune ct at gocept.com
Sun Aug 12 09:01:32 EDT 2007


Log message for revision 78776:
  Removing the old pytz module to update with 2007f.
  

Changed:
  D   Zope3/branches/3.4/src/pytz/README.txt
  D   Zope3/branches/3.4/src/pytz/__init__.py
  D   Zope3/branches/3.4/src/pytz/locales/
  D   Zope3/branches/3.4/src/pytz/reference.py
  D   Zope3/branches/3.4/src/pytz/tests/
  D   Zope3/branches/3.4/src/pytz/tzinfo.py
  D   Zope3/branches/3.4/src/pytz/zone.tab
  D   Zope3/branches/3.4/src/pytz/zoneinfo/

-=-
Deleted: Zope3/branches/3.4/src/pytz/README.txt
===================================================================
--- Zope3/branches/3.4/src/pytz/README.txt	2007-08-12 12:58:20 UTC (rev 78775)
+++ Zope3/branches/3.4/src/pytz/README.txt	2007-08-12 13:01:31 UTC (rev 78776)
@@ -1,289 +0,0 @@
-pytz - World Timezone Definitions for Python
-============================================
-
-:Author: Stuart Bishop <stuart at stuartbishop.net>
-
-Introduction
-~~~~~~~~~~~~
-
-pytz brings the Olson tz database into Python. This library allows
-accurate and cross platform timezone calculations using Python 2.3
-or higher. It also solves the issue of ambiguous times at the end
-of daylight savings, which you can read more about in the Python
-Library Reference (datetime.tzinfo).
-
-Amost all (over 540) of the Olson timezones are supported [*]_.
-
-Note that if you perform date arithmetic on local times that cross
-DST boundaries, the results may be in an incorrect timezone (ie.
-subtract 1 minute from 2002-10-27 1:00 EST and you get 2002-10-27
-0:59 EST instead of the correct 2002-10-27 1:59 EDT). This cannot
-be resolved without modifying the Python datetime implementation.
-However, these tzinfo classes provide a normalize() method which
-allows you to correct these values.
-
-
-Installation
-~~~~~~~~~~~~
-
-This is a standard Python distutils distribution. To install the
-package, run the following command as an administrative user::
-
-    python setup.py install
-
-
-Example & Usage
-~~~~~~~~~~~~~~~
-
->>> from datetime import datetime, timedelta
->>> from pytz import timezone
->>> utc = timezone('UTC')
->>> utc.zone
-'UTC'
->>> eastern = timezone('US/Eastern')
->>> eastern.zone
-'US/Eastern'
->>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
-
-The preferred way of dealing with times is to always work in UTC,
-converting to localtime only when generating output to be read
-by humans.
-
->>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
->>> loc_dt = utc_dt.astimezone(eastern)
->>> loc_dt.strftime(fmt)
-'2002-10-27 01:00:00 EST-0500'
-
-This library also allows you to do date arithmetic using local
-times, although it is more complicated than working in UTC as you
-need to use the `normalize` method to handle daylight savings time
-and other timezone transitions. In this example, `loc_dt` is set
-to the instant when daylight savings time ends in the US/Eastern
-timezone.
-
->>> before = loc_dt - timedelta(minutes=10)
->>> before.strftime(fmt)
-'2002-10-27 00:50:00 EST-0500'
->>> eastern.normalize(before).strftime(fmt)
-'2002-10-27 01:50:00 EDT-0400'
->>> after = eastern.normalize(before + timedelta(minutes=20))
->>> after.strftime(fmt)
-'2002-10-27 01:10:00 EST-0500'
-
-Creating localtimes is also tricky, and the reason why working with
-local times is not recommended. Unfortunately, you cannot just pass
-a 'tzinfo' argument when constructing a datetime (see the next section
-for more details)
-
->>> dt = datetime(2002, 10, 27, 1, 30, 0)
->>> dt1 = eastern.localize(dt, is_dst=True)
->>> dt1.strftime(fmt)
-'2002-10-27 01:30:00 EDT-0400'
->>> dt2 = eastern.localize(dt, is_dst=False)
->>> dt2.strftime(fmt)
-'2002-10-27 01:30:00 EST-0500'
-
-
-Problems with Localtime
-~~~~~~~~~~~~~~~~~~~~~~~
-
-The major problem we have to deal with is that certain datetimes
-may occur twice in a year. For example, in the US/Eastern timezone
-on the last Sunday morning in October, the following sequence
-happens:
-
-    - 01:00 EDT occurs
-    - 1 hour later, instead of 2:00am the clock is turned back 1 hour
-      and 01:00 happens again (this time 01:00 EST)
-
-In fact, every instant between 01:00 and 02:00 occurs twice. This means
-that if you try and create a time in the US/Eastern timezone using
-the standard datetime syntax, there is no way to specify if you meant
-before of after the end-of-daylight-savings-time transition.
-
->>> loc_dt = datetime(2002, 10, 27, 1, 30, 00, tzinfo=eastern)
->>> loc_dt.strftime(fmt)
-'2002-10-27 01:30:00 EST-0500'
-
-As you can see, the system has chosen one for you and there is a 50%
-chance of it being out by one hour. For some applications, this does
-not matter. However, if you are trying to schedule meetings with people
-in different timezones or analyze log files it is not acceptable. 
-
-The best and simplest solution is to stick with using UTC.  The pytz package
-encourages using UTC for internal timezone representation by including a
-special UTC implementation based on the standard Python reference 
-implementation in the Python documentation.  This timezone unpickles to be
-the same instance, and pickles to a relatively small size.  The UTC 
-implementation can be obtained as pytz.utc, pytz.UTC, or 
-pytz.timezone('UTC').  Note that this instance is not the same 
-instance (or implementation) as other timezones with the same meaning 
-(GMT, Greenwich, Universal, etc.).
-
->>> import pickle, pytz
->>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
->>> naive = dt.replace(tzinfo=None)
->>> p = pickle.dumps(dt, 1)
->>> naive_p = pickle.dumps(naive, 1)
->>> len(p), len(naive_p), len(p) - len(naive_p)
-(60, 43, 17)
->>> new = pickle.loads(p)
->>> new == dt
-True
->>> new is dt
-False
->>> new.tzinfo is dt.tzinfo
-True
->>> pytz.utc is pytz.UTC is pytz.timezone('UTC')
-True
->>> utc is pytz.timezone('GMT')
-False
-
-If you insist on working with local times, this library provides a
-facility for constructing them almost unambiguously.
-
->>> loc_dt = datetime(2002, 10, 27, 1, 30, 00)
->>> est_dt = eastern.localize(loc_dt, is_dst=True)
->>> edt_dt = eastern.localize(loc_dt, is_dst=False)
->>> print est_dt.strftime(fmt), '/', edt_dt.strftime(fmt)
-2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500
-
-Note that although this handles many cases, it is still not possible
-to handle all. In cases where countries change their timezone definitions,
-cases like the end-of-daylight-savings-time occur with no way of resolving
-the ambiguity. For example, in 1915 Warsaw switched from Warsaw time to
-Central European time. So at the stroke of midnight on August 4th 1915
-the clocks were wound back 24 minutes creating a ambiguous time period
-that cannot be specified without referring to the timezone abbreviation
-or the actual UTC offset.
-
-The 'Standard' Python way of handling all these ambiguities is not to,
-such as demonstrated in this example using the US/Eastern timezone
-definition from the Python documentation:
-
->>> from pytz.reference import Eastern
->>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern)
->>> str(dt)
-'2002-10-27 00:30:00-04:00'
->>> str(dt + timedelta(hours=1))
-'2002-10-27 01:30:00-05:00'
->>> str(dt + timedelta(hours=2))
-'2002-10-27 02:30:00-05:00'
->>> str(dt + timedelta(hours=3))
-'2002-10-27 03:30:00-05:00'
-
-Notice the first two results? At first glance you might think they are
-correct, but taking the UTC offset into account you find that they are
-actually two hours appart instead of the 1 hour we asked for.
-
->>> from pytz.reference import UTC
->>> str(dt.astimezone(UTC))
-'2002-10-27 04:30:00+00:00'
->>> str((dt + timedelta(hours=1)).astimezone(UTC))
-'2002-10-27 06:30:00+00:00'
-
-
-What is UTC
-~~~~~~~~~~~
-
-`UTC` is Universal Time, formerly known as Greenwich Mean Time or GMT.
-All other timezones are given as offsets from UTC. No daylight savings
-time occurs in UTC, making it a useful timezone to perform date arithmetic
-without worrying about the confusion and ambiguities caused by daylight
-savings time transitions, your country changing its timezone, or mobile
-computers that move roam through multiple timezones.
-
-
-Helpers
-~~~~~~~
-
-There are two lists of timezones provided.
-
-`all_timezones` is the exhaustive list of the timezone names that can be used.
-
->>> from pytz import all_timezones
->>> len(all_timezones) >= 500
-True
->>> 'Etc/Greenwich' in all_timezones
-True
-
-`common_timezones` is a list of useful, current timezones. It doesn't
-contain deprecated zones or historical zones. It is also a sequence of
-strings.
-
->>> from pytz import common_timezones
->>> len(common_timezones) < len(all_timezones)
-True
->>> 'Etc/Greenwich' in common_timezones
-False
-
-You can also retrieve lists of timezones used by particular countries
-using the `country_timezones()` method. It requires an ISO-3166 two letter
-country code.
-
->>> from pytz import country_timezones
->>> country_timezones('ch')
-['Europe/Zurich']
->>> country_timezones('CH')
-['Europe/Zurich']
-
-License
-~~~~~~~
-
-MIT license.
-
-This code is also available as part of Zope 3 under the Zope Public
-License,  Version 2.1 (ZPL).
-
-I'm happy to relicense this code if necessary for inclusion in other
-open source projects.
-
-Latest Versions
-~~~~~~~~~~~~~~~
-
-This package will be updated after releases of the Olson timezone database.
-The latest version can be downloaded from Sourceforge_. The code that
-is used to generate this distribution is available using the Bazaar_
-revision control system in at:
-
-http://mirrors.sourcecontrol.net/stuart@stuartbishop.net--public/pytz--devel--0
-
-.. _Sourceforge: http://sourceforge.net/projects/pytz/
-.. _Bazaar: http://bazaar.canonical.com/
-
-
-Issues & Limitations
-~~~~~~~~~~~~~~~~~~~~
-
-- Offsets from UTC are rounded to the nearest whole minute, so timezones
-  such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This is 
-  a limitation of the Python datetime library.
-
-- If you think a timezone definition is incorrect, I probably can't fix
-  it. pytz is a direct translation of the Olson timezone database, and
-  changes to the timezone definitions need to be made to this source.
-  If you find errors they should be reported to the time zone mailing
-  list, linked from http://www.twinsun.com/tz/tz-link.htm
-
-Further Reading
-~~~~~~~~~~~~~~~
-
-More info than you want to know about timezones:
-http://www.twinsun.com/tz/tz-link.htm
-
-
-Contact
-~~~~~~~
-
-Stuart Bishop <stuart at stuartbishop.net>
-
-.. [*]  The missing few are for Riyadh Solar Time in 1987, 1988 and 1989.
-	As Saudi Arabia gave up trying to cope with their timezone
-	definition, I see no reason to complicate my code further
-	to cope with them.  (I understand the intention was to set
-	sunset to 0:00 local time, the start of the Islamic day.
-	In the best case caused the DST offset to change daily and
-	worst case caused the DST offset to change each instant
-	depending on how you interpreted the ruling.)
-
-

Deleted: Zope3/branches/3.4/src/pytz/__init__.py
===================================================================
--- Zope3/branches/3.4/src/pytz/__init__.py	2007-08-12 12:58:20 UTC (rev 78775)
+++ Zope3/branches/3.4/src/pytz/__init__.py	2007-08-12 13:01:31 UTC (rev 78776)
@@ -1,1320 +0,0 @@
-'''
-datetime.tzinfo timezone definitions generated from the
-Olson timezone database:
-
-    ftp://elsie.nci.nih.gov/pub/tz*.tar.gz
-
-See the datetime section of the Python Library Reference for information
-on how to use these modules.
-'''
-
-# The Olson database has historically been updated about 4 times a year
-OLSON_VERSION = '2006j'
-VERSION = OLSON_VERSION
-#VERSION = OLSON_VERSION + '.2'
-__version__ = OLSON_VERSION
-
-OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
-
-__all__ = [
-    'timezone', 'all_timezones', 'common_timezones', 'utc',
-    'AmbiguousTimeError', 'country_timezones', '_',
-    ]
-
-import sys, datetime, os.path, gettext
-from tzinfo import AmbiguousTimeError, unpickler
-
-# Enable this when we get some translations?
-# We want an i18n API that is useful to programs using Python's gettext
-# module, as well as the Zope3 i18n package. Perhaps we should just provide
-# the POT file and translations, and leave it up to callers to make use
-# of them.
-# 
-# t = gettext.translation(
-#         'pytz', os.path.join(os.path.dirname(__file__), 'locales'),
-#         fallback=True
-#         )
-# def _(timezone_name):
-#     """Translate a timezone name using the current locale, returning Unicode"""
-#     return t.ugettext(timezone_name)
-
-def timezone(zone):
-    ''' Return a datetime.tzinfo implementation for the given timezone 
-    
-    >>> from datetime import datetime, timedelta
-    >>> utc = timezone('UTC')
-    >>> eastern = timezone('US/Eastern')
-    >>> eastern.zone
-    'US/Eastern'
-    >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
-    >>> loc_dt = utc_dt.astimezone(eastern)
-    >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
-    >>> loc_dt.strftime(fmt)
-    '2002-10-27 01:00:00 EST (-0500)'
-    >>> (loc_dt - timedelta(minutes=10)).strftime(fmt)
-    '2002-10-27 00:50:00 EST (-0500)'
-    >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt)
-    '2002-10-27 01:50:00 EDT (-0400)'
-    >>> (loc_dt + timedelta(minutes=10)).strftime(fmt)
-    '2002-10-27 01:10:00 EST (-0500)'
-    '''
-    zone = _munge_zone(zone)
-    if zone.upper() == 'UTC':
-        return utc
-    zone_bits = ['zoneinfo'] + zone.split('/')
-
-    # Load zone's module
-    module_name = '.'.join(zone_bits)
-    try:
-        module = __import__(module_name, globals(), locals())
-    except ImportError:
-        raise KeyError, zone
-    rv = module
-    for bit in zone_bits[1:]:
-        rv = getattr(rv, bit)
-
-    # Return instance from that module
-    rv = getattr(rv, zone_bits[-1])
-    assert type(rv) != type(sys)
-    return rv
-
-
-def _munge_zone(zone):
-    ''' Convert a zone into a string suitable for use as a Python identifier 
-    '''
-    return zone.replace('+', '_plus_').replace('-', '_minus_')
-
-
-ZERO = datetime.timedelta(0)
-HOUR = datetime.timedelta(hours=1)
-
-
-class UTC(datetime.tzinfo):
-    """UTC
-    
-    Identical to the reference UTC implementation given in Python docs except
-    that it unpickles using the single module global instance defined beneath
-    this class declaration.
-
-    Also contains extra attributes and methods to match other pytz tzinfo
-    instances.
-    """
-    zone = "UTC"
-
-    def utcoffset(self, dt):
-        return ZERO
-
-    def tzname(self, dt):
-        return "UTC"
-
-    def dst(self, dt):
-        return ZERO
-    
-    def __reduce__(self):
-        return _UTC, ()
-
-    def localize(self, dt, is_dst=False):
-        '''Convert naive time to local time'''
-        if dt.tzinfo is not None:
-            raise ValueError, 'Not naive datetime (tzinfo is already set)'
-        return dt.replace(tzinfo=self)
-
-    def normalize(self, dt, is_dst=False):
-        '''Correct the timezone information on the given datetime'''
-        if dt.tzinfo is None:
-            raise ValueError, 'Naive time - no tzinfo set'
-        return dt.replace(tzinfo=self)
-
-    def __repr__(self):
-        return "<UTC>"
-
-    def __str__(self):
-        return "UTC"
-
-
-UTC = utc = UTC() # UTC is a singleton
-
-
-def _UTC():
-    """Factory function for utc unpickling.
-    
-    Makes sure that unpickling a utc instance always returns the same 
-    module global.
-    
-    These examples belong in the UTC class above, but it is obscured; or in
-    the README.txt, but we are not depending on Python 2.4 so integrating
-    the README.txt examples with the unit tests is not trivial.
-    
-    >>> import datetime, pickle
-    >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
-    >>> naive = dt.replace(tzinfo=None)
-    >>> p = pickle.dumps(dt, 1)
-    >>> naive_p = pickle.dumps(naive, 1)
-    >>> len(p), len(naive_p), len(p) - len(naive_p)
-    (60, 43, 17)
-    >>> new = pickle.loads(p)
-    >>> new == dt
-    True
-    >>> new is dt
-    False
-    >>> new.tzinfo is dt.tzinfo
-    True
-    >>> utc is UTC is timezone('UTC')
-    True
-    >>> utc is timezone('GMT')
-    False
-    """
-    return utc
-_UTC.__safe_for_unpickling__ = True
-
-
-def _p(*args):
-    """Factory function for unpickling pytz tzinfo instances.
-
-    Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle
-    by shortening the path.
-    """
-    return unpickler(*args)
-_p.__safe_for_unpickling__ = True
-
-_country_timezones_cache = {}
-
-def country_timezones(iso3166_code):
-    """Return a list of timezones used in a particular country.
-
-    iso3166_code is the two letter code used to identify the country.
-
-    >>> country_timezones('ch')
-    ['Europe/Zurich']
-    >>> country_timezones('CH')
-    ['Europe/Zurich']
-    >>> country_timezones('XXX')
-    Traceback (most recent call last):
-    ...
-    KeyError: 'XXX'
-    """
-    iso3166_code = iso3166_code.upper()
-    if not _country_timezones_cache:
-        try:
-            from pkg_resources import resource_stream
-            zone_tab = resource_stream(__name__, 'zone.tab')
-        except ImportError:
-            zone_tab = open(os.path.join(os.path.dirname(__file__), 'zone.tab'))
-        for line in zone_tab:
-            if line.startswith('#'):
-                continue
-            code, coordinates, zone = line.split(None, 4)[:3]
-            try:
-                _country_timezones_cache[code].append(zone)
-            except KeyError:
-                _country_timezones_cache[code] = [zone]
-    return _country_timezones_cache[iso3166_code]
-
-# Time-zone info based solely on fixed offsets
-
-class _FixedOffset(datetime.tzinfo):
-
-    zone = None # to match the standard pytz API
-
-    def __init__(self, minutes):
-        if abs(minutes) >= 1440:
-            raise ValueError("absolute offset is too large", minutes)
-        self._minutes = minutes
-        self._offset = datetime.timedelta(minutes=minutes)
-
-    def utcoffset(self, dt):
-        return self._offset
-
-    def __reduce__(self):
-        return FixedOffset, (self._minutes, )
-
-    def dst(self, dt):
-        return None
-    
-    def tzname(self, dt):
-        return None
-
-    def __repr__(self):
-        return 'pytz.FixedOffset(%d)' % self._minutes
-
-    def localize(self, dt, is_dst=False):
-        '''Convert naive time to local time'''
-        if dt.tzinfo is not None:
-            raise ValueError, 'Not naive datetime (tzinfo is already set)'
-        return dt.replace(tzinfo=self)
-
-    def normalize(self, dt, is_dst=False):
-        '''Correct the timezone information on the given datetime'''
-        if dt.tzinfo is None:
-            raise ValueError, 'Naive time - no tzinfo set'
-        return dt.replace(tzinfo=self)
-
-def FixedOffset(offset, _tzinfos = {}):
-    """return a fixed-offset timezone based off a number of minutes.
-    
-        >>> one = FixedOffset(-330)
-        >>> one
-        pytz.FixedOffset(-330)
-        >>> one.utcoffset(datetime.datetime.now())
-        datetime.timedelta(-1, 66600)
-
-        >>> two = FixedOffset(1380)
-        >>> two
-        pytz.FixedOffset(1380)
-        >>> two.utcoffset(datetime.datetime.now())
-        datetime.timedelta(0, 82800)
-    
-    The datetime.timedelta must be between the range of -1 and 1 day,
-    non-inclusive.
-
-        >>> FixedOffset(1440)
-        Traceback (most recent call last):
-        ...
-        ValueError: ('absolute offset is too large', 1440)
-
-        >>> FixedOffset(-1440)
-        Traceback (most recent call last):
-        ...
-        ValueError: ('absolute offset is too large', -1440)
-
-    An offset of 0 is special-cased to return UTC.
-
-        >>> FixedOffset(0) is UTC
-        True
-
-    There should always be only one instance of a FixedOffset per timedelta.
-    This should be true for multiple creation calls.
-    
-        >>> FixedOffset(-330) is one
-        True
-        >>> FixedOffset(1380) is two
-        True
-
-    It should also be true for pickling.
-
-        >>> import pickle
-        >>> pickle.loads(pickle.dumps(one)) is one
-        True
-        >>> pickle.loads(pickle.dumps(two)) is two
-        True
-
-    """
-
-    if offset == 0:
-        return UTC
-
-    info = _tzinfos.get(offset)
-    if info is None:
-        # We haven't seen this one before. we need to save it.
-
-        # Use setdefault to avoid a race condition and make sure we have
-        # only one
-        info = _tzinfos.setdefault(offset, _FixedOffset(offset))
-
-    return info
-
-FixedOffset.__safe_for_unpickling__ = True
-
-def _test():
-    import doctest, os, sys
-    sys.path.insert(0, os.pardir)
-    import pytz
-    return doctest.testmod(pytz)
-
-if __name__ == '__main__':
-    _test()
-
-common_timezones = \
-['Africa/Abidjan',
- 'Africa/Accra',
- 'Africa/Addis_Ababa',
- 'Africa/Algiers',
- 'Africa/Asmera',
- 'Africa/Bamako',
- 'Africa/Bangui',
- 'Africa/Banjul',
- 'Africa/Bissau',
- 'Africa/Blantyre',
- 'Africa/Brazzaville',
- 'Africa/Bujumbura',
- 'Africa/Cairo',
- 'Africa/Casablanca',
- 'Africa/Ceuta',
- 'Africa/Conakry',
- 'Africa/Dakar',
- 'Africa/Dar_es_Salaam',
- 'Africa/Djibouti',
- 'Africa/Douala',
- 'Africa/El_Aaiun',
- 'Africa/Freetown',
- 'Africa/Gaborone',
- 'Africa/Harare',
- 'Africa/Johannesburg',
- 'Africa/Kampala',
- 'Africa/Khartoum',
- 'Africa/Kigali',
- 'Africa/Kinshasa',
- 'Africa/Lagos',
- 'Africa/Libreville',
- 'Africa/Lome',
- 'Africa/Luanda',
- 'Africa/Lubumbashi',
- 'Africa/Lusaka',
- 'Africa/Malabo',
- 'Africa/Maputo',
- 'Africa/Maseru',
- 'Africa/Mbabane',
- 'Africa/Mogadishu',
- 'Africa/Monrovia',
- 'Africa/Nairobi',
- 'Africa/Ndjamena',
- 'Africa/Niamey',
- 'Africa/Nouakchott',
- 'Africa/Ouagadougou',
- 'Africa/Porto-Novo',
- 'Africa/Sao_Tome',
- 'Africa/Timbuktu',
- 'Africa/Tripoli',
- 'Africa/Tunis',
- 'Africa/Windhoek',
- 'America/Adak',
- 'America/Anchorage',
- 'America/Anguilla',
- 'America/Antigua',
- 'America/Araguaina',
- 'America/Aruba',
- 'America/Asuncion',
- 'America/Atikokan',
- 'America/Atka',
- 'America/Bahia',
- 'America/Barbados',
- 'America/Belem',
- 'America/Belize',
- 'America/Blanc-Sablon',
- 'America/Boa_Vista',
- 'America/Bogota',
- 'America/Boise',
- 'America/Buenos_Aires',
- 'America/Cambridge_Bay',
- 'America/Campo_Grande',
- 'America/Cancun',
- 'America/Caracas',
- 'America/Catamarca',
- 'America/Cayenne',
- 'America/Cayman',
- 'America/Chicago',
- 'America/Chihuahua',
- 'America/Coral_Harbour',
- 'America/Cordoba',
- 'America/Costa_Rica',
- 'America/Cuiaba',
- 'America/Curacao',
- 'America/Danmarkshavn',
- 'America/Dawson',
- 'America/Dawson_Creek',
- 'America/Denver',
- 'America/Detroit',
- 'America/Dominica',
- 'America/Edmonton',
- 'America/Eirunepe',
- 'America/El_Salvador',
- 'America/Ensenada',
- 'America/Fort_Wayne',
- 'America/Fortaleza',
- 'America/Glace_Bay',
- 'America/Godthab',
- 'America/Goose_Bay',
- 'America/Grand_Turk',
- 'America/Grenada',
- 'America/Guadeloupe',
- 'America/Guatemala',
- 'America/Guayaquil',
- 'America/Guyana',
- 'America/Halifax',
- 'America/Havana',
- 'America/Hermosillo',
- 'America/Indianapolis',
- 'America/Inuvik',
- 'America/Iqaluit',
- 'America/Jamaica',
- 'America/Jujuy',
- 'America/Juneau',
- 'America/Knox_IN',
- 'America/La_Paz',
- 'America/Lima',
- 'America/Los_Angeles',
- 'America/Louisville',
- 'America/Maceio',
- 'America/Managua',
- 'America/Manaus',
- 'America/Martinique',
- 'America/Mazatlan',
- 'America/Mendoza',
- 'America/Menominee',
- 'America/Merida',
- 'America/Mexico_City',
- 'America/Miquelon',
- 'America/Moncton',
- 'America/Monterrey',
- 'America/Montevideo',
- 'America/Montreal',
- 'America/Montserrat',
- 'America/Nassau',
- 'America/New_York',
- 'America/Nipigon',
- 'America/Nome',
- 'America/Noronha',
- 'America/Panama',
- 'America/Pangnirtung',
- 'America/Paramaribo',
- 'America/Phoenix',
- 'America/Port-au-Prince',
- 'America/Port_of_Spain',
- 'America/Porto_Acre',
- 'America/Porto_Velho',
- 'America/Puerto_Rico',
- 'America/Rainy_River',
- 'America/Rankin_Inlet',
- 'America/Recife',
- 'America/Regina',
- 'America/Rio_Branco',
- 'America/Rosario',
- 'America/Santiago',
- 'America/Santo_Domingo',
- 'America/Sao_Paulo',
- 'America/Scoresbysund',
- 'America/Shiprock',
- 'America/St_Johns',
- 'America/St_Kitts',
- 'America/St_Lucia',
- 'America/St_Thomas',
- 'America/St_Vincent',
- 'America/Swift_Current',
- 'America/Tegucigalpa',
- 'America/Thule',
- 'America/Thunder_Bay',
- 'America/Tijuana',
- 'America/Toronto',
- 'America/Tortola',
- 'America/Vancouver',
- 'America/Virgin',
- 'America/Whitehorse',
- 'America/Winnipeg',
- 'America/Yakutat',
- 'America/Yellowknife',
- 'Antarctica/Casey',
- 'Antarctica/Davis',
- 'Antarctica/DumontDUrville',
- 'Antarctica/Mawson',
- 'Antarctica/McMurdo',
- 'Antarctica/Palmer',
- 'Antarctica/Rothera',
- 'Antarctica/South_Pole',
- 'Antarctica/Syowa',
- 'Antarctica/Vostok',
- 'Arctic/Longyearbyen',
- 'Asia/Aden',
- 'Asia/Almaty',
- 'Asia/Amman',
- 'Asia/Anadyr',
- 'Asia/Aqtau',
- 'Asia/Aqtobe',
- 'Asia/Ashgabat',
- 'Asia/Ashkhabad',
- 'Asia/Baghdad',
- 'Asia/Bahrain',
- 'Asia/Baku',
- 'Asia/Bangkok',
- 'Asia/Beirut',
- 'Asia/Bishkek',
- 'Asia/Brunei',
- 'Asia/Calcutta',
- 'Asia/Choibalsan',
- 'Asia/Chongqing',
- 'Asia/Chungking',
- 'Asia/Colombo',
- 'Asia/Dacca',
- 'Asia/Damascus',
- 'Asia/Dhaka',
- 'Asia/Dili',
- 'Asia/Dubai',
- 'Asia/Dushanbe',
- 'Asia/Gaza',
- 'Asia/Harbin',
- 'Asia/Hong_Kong',
- 'Asia/Hovd',
- 'Asia/Irkutsk',
- 'Asia/Istanbul',
- 'Asia/Jakarta',
- 'Asia/Jayapura',
- 'Asia/Jerusalem',
- 'Asia/Kabul',
- 'Asia/Kamchatka',
- 'Asia/Karachi',
- 'Asia/Kashgar',
- 'Asia/Katmandu',
- 'Asia/Krasnoyarsk',
- 'Asia/Kuala_Lumpur',
- 'Asia/Kuching',
- 'Asia/Kuwait',
- 'Asia/Macao',
- 'Asia/Macau',
- 'Asia/Magadan',
- 'Asia/Makassar',
- 'Asia/Manila',
- 'Asia/Muscat',
- 'Asia/Nicosia',
- 'Asia/Novosibirsk',
- 'Asia/Omsk',
- 'Asia/Oral',
- 'Asia/Phnom_Penh',
- 'Asia/Pontianak',
- 'Asia/Pyongyang',
- 'Asia/Qatar',
- 'Asia/Qyzylorda',
- 'Asia/Rangoon',
- 'Asia/Riyadh',
- 'Asia/Saigon',
- 'Asia/Sakhalin',
- 'Asia/Samarkand',
- 'Asia/Seoul',
- 'Asia/Shanghai',
- 'Asia/Singapore',
- 'Asia/Taipei',
- 'Asia/Tashkent',
- 'Asia/Tbilisi',
- 'Asia/Tehran',
- 'Asia/Tel_Aviv',
- 'Asia/Thimbu',
- 'Asia/Thimphu',
- 'Asia/Tokyo',
- 'Asia/Ujung_Pandang',
- 'Asia/Ulaanbaatar',
- 'Asia/Ulan_Bator',
- 'Asia/Urumqi',
- 'Asia/Vientiane',
- 'Asia/Vladivostok',
- 'Asia/Yakutsk',
- 'Asia/Yekaterinburg',
- 'Asia/Yerevan',
- 'Atlantic/Azores',
- 'Atlantic/Bermuda',
- 'Atlantic/Canary',
- 'Atlantic/Cape_Verde',
- 'Atlantic/Faeroe',
- 'Atlantic/Jan_Mayen',
- 'Atlantic/Madeira',
- 'Atlantic/Reykjavik',
- 'Atlantic/South_Georgia',
- 'Atlantic/St_Helena',
- 'Atlantic/Stanley',
- 'Australia/ACT',
- 'Australia/Adelaide',
- 'Australia/Brisbane',
- 'Australia/Broken_Hill',
- 'Australia/Canberra',
- 'Australia/Currie',
- 'Australia/Darwin',
- 'Australia/Hobart',
- 'Australia/LHI',
- 'Australia/Lindeman',
- 'Australia/Lord_Howe',
- 'Australia/Melbourne',
- 'Australia/NSW',
- 'Australia/North',
- 'Australia/Perth',
- 'Australia/Queensland',
- 'Australia/South',
- 'Australia/Sydney',
- 'Australia/Tasmania',
- 'Australia/Victoria',
- 'Australia/West',
- 'Australia/Yancowinna',
- 'Brazil/Acre',
- 'Brazil/DeNoronha',
- 'Brazil/East',
- 'Brazil/West',
- 'Canada/Atlantic',
- 'Canada/Central',
- 'Canada/East-Saskatchewan',
- 'Canada/Eastern',
- 'Canada/Mountain',
- 'Canada/Newfoundland',
- 'Canada/Pacific',
- 'Canada/Saskatchewan',
- 'Canada/Yukon',
- 'Chile/Continental',
- 'Chile/EasterIsland',
- 'Europe/Amsterdam',
- 'Europe/Andorra',
- 'Europe/Athens',
- 'Europe/Belfast',
- 'Europe/Belgrade',
- 'Europe/Berlin',
- 'Europe/Bratislava',
- 'Europe/Brussels',
- 'Europe/Bucharest',
- 'Europe/Budapest',
- 'Europe/Chisinau',
- 'Europe/Copenhagen',
- 'Europe/Dublin',
- 'Europe/Gibraltar',
- 'Europe/Guernsey',
- 'Europe/Helsinki',
- 'Europe/Isle_of_Man',
- 'Europe/Istanbul',
- 'Europe/Jersey',
- 'Europe/Kaliningrad',
- 'Europe/Kiev',
- 'Europe/Lisbon',
- 'Europe/Ljubljana',
- 'Europe/London',
- 'Europe/Luxembourg',
- 'Europe/Madrid',
- 'Europe/Malta',
- 'Europe/Mariehamn',
- 'Europe/Minsk',
- 'Europe/Monaco',
- 'Europe/Moscow',
- 'Europe/Nicosia',
- 'Europe/Oslo',
- 'Europe/Paris',
- 'Europe/Prague',
- 'Europe/Riga',
- 'Europe/Rome',
- 'Europe/Samara',
- 'Europe/San_Marino',
- 'Europe/Sarajevo',
- 'Europe/Simferopol',
- 'Europe/Skopje',
- 'Europe/Sofia',
- 'Europe/Stockholm',
- 'Europe/Tallinn',
- 'Europe/Tirane',
- 'Europe/Tiraspol',
- 'Europe/Uzhgorod',
- 'Europe/Vaduz',
- 'Europe/Vatican',
- 'Europe/Vienna',
- 'Europe/Vilnius',
- 'Europe/Volgograd',
- 'Europe/Warsaw',
- 'Europe/Zagreb',
- 'Europe/Zaporozhye',
- 'Europe/Zurich',
- 'GMT',
- 'Indian/Antananarivo',
- 'Indian/Chagos',
- 'Indian/Christmas',
- 'Indian/Cocos',
- 'Indian/Comoro',
- 'Indian/Kerguelen',
- 'Indian/Mahe',
- 'Indian/Maldives',
- 'Indian/Mauritius',
- 'Indian/Mayotte',
- 'Indian/Reunion',
- 'Mexico/BajaNorte',
- 'Mexico/BajaSur',
- 'Mexico/General',
- 'Pacific/Apia',
- 'Pacific/Auckland',
- 'Pacific/Chatham',
- 'Pacific/Easter',
- 'Pacific/Efate',
- 'Pacific/Enderbury',
- 'Pacific/Fakaofo',
- 'Pacific/Fiji',
- 'Pacific/Funafuti',
- 'Pacific/Galapagos',
- 'Pacific/Gambier',
- 'Pacific/Guadalcanal',
- 'Pacific/Guam',
- 'Pacific/Honolulu',
- 'Pacific/Johnston',
- 'Pacific/Kiritimati',
- 'Pacific/Kosrae',
- 'Pacific/Kwajalein',
- 'Pacific/Majuro',
- 'Pacific/Marquesas',
- 'Pacific/Midway',
- 'Pacific/Nauru',
- 'Pacific/Niue',
- 'Pacific/Norfolk',
- 'Pacific/Noumea',
- 'Pacific/Pago_Pago',
- 'Pacific/Palau',
- 'Pacific/Pitcairn',
- 'Pacific/Ponape',
- 'Pacific/Port_Moresby',
- 'Pacific/Rarotonga',
- 'Pacific/Saipan',
- 'Pacific/Samoa',
- 'Pacific/Tahiti',
- 'Pacific/Tarawa',
- 'Pacific/Tongatapu',
- 'Pacific/Truk',
- 'Pacific/Wake',
- 'Pacific/Wallis',
- 'Pacific/Yap',
- 'US/Alaska',
- 'US/Aleutian',
- 'US/Arizona',
- 'US/Central',
- 'US/East-Indiana',
- 'US/Eastern',
- 'US/Hawaii',
- 'US/Indiana-Starke',
- 'US/Michigan',
- 'US/Mountain',
- 'US/Pacific',
- 'US/Pacific-New',
- 'US/Samoa',
- 'UTC']
-
-all_timezones = \
-['Africa/Abidjan',
- 'Africa/Accra',
- 'Africa/Addis_Ababa',
- 'Africa/Algiers',
- 'Africa/Asmera',
- 'Africa/Bamako',
- 'Africa/Bangui',
- 'Africa/Banjul',
- 'Africa/Bissau',
- 'Africa/Blantyre',
- 'Africa/Brazzaville',
- 'Africa/Bujumbura',
- 'Africa/Cairo',
- 'Africa/Casablanca',
- 'Africa/Ceuta',
- 'Africa/Conakry',
- 'Africa/Dakar',
- 'Africa/Dar_es_Salaam',
- 'Africa/Djibouti',
- 'Africa/Douala',
- 'Africa/El_Aaiun',
- 'Africa/Freetown',
- 'Africa/Gaborone',
- 'Africa/Harare',
- 'Africa/Johannesburg',
- 'Africa/Kampala',
- 'Africa/Khartoum',
- 'Africa/Kigali',
- 'Africa/Kinshasa',
- 'Africa/Lagos',
- 'Africa/Libreville',
- 'Africa/Lome',
- 'Africa/Luanda',
- 'Africa/Lubumbashi',
- 'Africa/Lusaka',
- 'Africa/Malabo',
- 'Africa/Maputo',
- 'Africa/Maseru',
- 'Africa/Mbabane',
- 'Africa/Mogadishu',
- 'Africa/Monrovia',
- 'Africa/Nairobi',
- 'Africa/Ndjamena',
- 'Africa/Niamey',
- 'Africa/Nouakchott',
- 'Africa/Ouagadougou',
- 'Africa/Porto-Novo',
- 'Africa/Sao_Tome',
- 'Africa/Timbuktu',
- 'Africa/Tripoli',
- 'Africa/Tunis',
- 'Africa/Windhoek',
- 'America/Adak',
- 'America/Anchorage',
- 'America/Anguilla',
- 'America/Antigua',
- 'America/Araguaina',
- 'America/Argentina/Buenos_Aires',
- 'America/Argentina/Catamarca',
- 'America/Argentina/ComodRivadavia',
- 'America/Argentina/Cordoba',
- 'America/Argentina/Jujuy',
- 'America/Argentina/La_Rioja',
- 'America/Argentina/Mendoza',
- 'America/Argentina/Rio_Gallegos',
- 'America/Argentina/San_Juan',
- 'America/Argentina/Tucuman',
- 'America/Argentina/Ushuaia',
- 'America/Aruba',
- 'America/Asuncion',
- 'America/Atikokan',
- 'America/Atka',
- 'America/Bahia',
- 'America/Barbados',
- 'America/Belem',
- 'America/Belize',
- 'America/Blanc-Sablon',
- 'America/Boa_Vista',
- 'America/Bogota',
- 'America/Boise',
- 'America/Buenos_Aires',
- 'America/Cambridge_Bay',
- 'America/Campo_Grande',
- 'America/Cancun',
- 'America/Caracas',
- 'America/Catamarca',
- 'America/Cayenne',
- 'America/Cayman',
- 'America/Chicago',
- 'America/Chihuahua',
- 'America/Coral_Harbour',
- 'America/Cordoba',
- 'America/Costa_Rica',
- 'America/Cuiaba',
- 'America/Curacao',
- 'America/Danmarkshavn',
- 'America/Dawson',
- 'America/Dawson_Creek',
- 'America/Denver',
- 'America/Detroit',
- 'America/Dominica',
- 'America/Edmonton',
- 'America/Eirunepe',
- 'America/El_Salvador',
- 'America/Ensenada',
- 'America/Fort_Wayne',
- 'America/Fortaleza',
- 'America/Glace_Bay',
- 'America/Godthab',
- 'America/Goose_Bay',
- 'America/Grand_Turk',
- 'America/Grenada',
- 'America/Guadeloupe',
- 'America/Guatemala',
- 'America/Guayaquil',
- 'America/Guyana',
- 'America/Halifax',
- 'America/Havana',
- 'America/Hermosillo',
- 'America/Indiana/Indianapolis',
- 'America/Indiana/Knox',
- 'America/Indiana/Marengo',
- 'America/Indiana/Petersburg',
- 'America/Indiana/Vevay',
- 'America/Indiana/Vincennes',
- 'America/Indianapolis',
- 'America/Inuvik',
- 'America/Iqaluit',
- 'America/Jamaica',
- 'America/Jujuy',
- 'America/Juneau',
- 'America/Kentucky/Louisville',
- 'America/Kentucky/Monticello',
- 'America/Knox_IN',
- 'America/La_Paz',
- 'America/Lima',
- 'America/Los_Angeles',
- 'America/Louisville',
- 'America/Maceio',
- 'America/Managua',
- 'America/Manaus',
- 'America/Martinique',
- 'America/Mazatlan',
- 'America/Mendoza',
- 'America/Menominee',
- 'America/Merida',
- 'America/Mexico_City',
- 'America/Miquelon',
- 'America/Moncton',
- 'America/Monterrey',
- 'America/Montevideo',
- 'America/Montreal',
- 'America/Montserrat',
- 'America/Nassau',
- 'America/New_York',
- 'America/Nipigon',
- 'America/Nome',
- 'America/Noronha',
- 'America/North_Dakota/Center',
- 'America/North_Dakota/New_Salem',
- 'America/Panama',
- 'America/Pangnirtung',
- 'America/Paramaribo',
- 'America/Phoenix',
- 'America/Port-au-Prince',
- 'America/Port_of_Spain',
- 'America/Porto_Acre',
- 'America/Porto_Velho',
- 'America/Puerto_Rico',
- 'America/Rainy_River',
- 'America/Rankin_Inlet',
- 'America/Recife',
- 'America/Regina',
- 'America/Rio_Branco',
- 'America/Rosario',
- 'America/Santiago',
- 'America/Santo_Domingo',
- 'America/Sao_Paulo',
- 'America/Scoresbysund',
- 'America/Shiprock',
- 'America/St_Johns',
- 'America/St_Kitts',
- 'America/St_Lucia',
- 'America/St_Thomas',
- 'America/St_Vincent',
- 'America/Swift_Current',
- 'America/Tegucigalpa',
- 'America/Thule',
- 'America/Thunder_Bay',
- 'America/Tijuana',
- 'America/Toronto',
- 'America/Tortola',
- 'America/Vancouver',
- 'America/Virgin',
- 'America/Whitehorse',
- 'America/Winnipeg',
- 'America/Yakutat',
- 'America/Yellowknife',
- 'Antarctica/Casey',
- 'Antarctica/Davis',
- 'Antarctica/DumontDUrville',
- 'Antarctica/Mawson',
- 'Antarctica/McMurdo',
- 'Antarctica/Palmer',
- 'Antarctica/Rothera',
- 'Antarctica/South_Pole',
- 'Antarctica/Syowa',
- 'Antarctica/Vostok',
- 'Arctic/Longyearbyen',
- 'Asia/Aden',
- 'Asia/Almaty',
- 'Asia/Amman',
- 'Asia/Anadyr',
- 'Asia/Aqtau',
- 'Asia/Aqtobe',
- 'Asia/Ashgabat',
- 'Asia/Ashkhabad',
- 'Asia/Baghdad',
- 'Asia/Bahrain',
- 'Asia/Baku',
- 'Asia/Bangkok',
- 'Asia/Beirut',
- 'Asia/Bishkek',
- 'Asia/Brunei',
- 'Asia/Calcutta',
- 'Asia/Choibalsan',
- 'Asia/Chongqing',
- 'Asia/Chungking',
- 'Asia/Colombo',
- 'Asia/Dacca',
- 'Asia/Damascus',
- 'Asia/Dhaka',
- 'Asia/Dili',
- 'Asia/Dubai',
- 'Asia/Dushanbe',
- 'Asia/Gaza',
- 'Asia/Harbin',
- 'Asia/Hong_Kong',
- 'Asia/Hovd',
- 'Asia/Irkutsk',
- 'Asia/Istanbul',
- 'Asia/Jakarta',
- 'Asia/Jayapura',
- 'Asia/Jerusalem',
- 'Asia/Kabul',
- 'Asia/Kamchatka',
- 'Asia/Karachi',
- 'Asia/Kashgar',
- 'Asia/Katmandu',
- 'Asia/Krasnoyarsk',
- 'Asia/Kuala_Lumpur',
- 'Asia/Kuching',
- 'Asia/Kuwait',
- 'Asia/Macao',
- 'Asia/Macau',
- 'Asia/Magadan',
- 'Asia/Makassar',
- 'Asia/Manila',
- 'Asia/Muscat',
- 'Asia/Nicosia',
- 'Asia/Novosibirsk',
- 'Asia/Omsk',
- 'Asia/Oral',
- 'Asia/Phnom_Penh',
- 'Asia/Pontianak',
- 'Asia/Pyongyang',
- 'Asia/Qatar',
- 'Asia/Qyzylorda',
- 'Asia/Rangoon',
- 'Asia/Riyadh',
- 'Asia/Saigon',
- 'Asia/Sakhalin',
- 'Asia/Samarkand',
- 'Asia/Seoul',
- 'Asia/Shanghai',
- 'Asia/Singapore',
- 'Asia/Taipei',
- 'Asia/Tashkent',
- 'Asia/Tbilisi',
- 'Asia/Tehran',
- 'Asia/Tel_Aviv',
- 'Asia/Thimbu',
- 'Asia/Thimphu',
- 'Asia/Tokyo',
- 'Asia/Ujung_Pandang',
- 'Asia/Ulaanbaatar',
- 'Asia/Ulan_Bator',
- 'Asia/Urumqi',
- 'Asia/Vientiane',
- 'Asia/Vladivostok',
- 'Asia/Yakutsk',
- 'Asia/Yekaterinburg',
- 'Asia/Yerevan',
- 'Atlantic/Azores',
- 'Atlantic/Bermuda',
- 'Atlantic/Canary',
- 'Atlantic/Cape_Verde',
- 'Atlantic/Faeroe',
- 'Atlantic/Jan_Mayen',
- 'Atlantic/Madeira',
- 'Atlantic/Reykjavik',
- 'Atlantic/South_Georgia',
- 'Atlantic/St_Helena',
- 'Atlantic/Stanley',
- 'Australia/ACT',
- 'Australia/Adelaide',
- 'Australia/Brisbane',
- 'Australia/Broken_Hill',
- 'Australia/Canberra',
- 'Australia/Currie',
- 'Australia/Darwin',
- 'Australia/Hobart',
- 'Australia/LHI',
- 'Australia/Lindeman',
- 'Australia/Lord_Howe',
- 'Australia/Melbourne',
- 'Australia/NSW',
- 'Australia/North',
- 'Australia/Perth',
- 'Australia/Queensland',
- 'Australia/South',
- 'Australia/Sydney',
- 'Australia/Tasmania',
- 'Australia/Victoria',
- 'Australia/West',
- 'Australia/Yancowinna',
- 'Brazil/Acre',
- 'Brazil/DeNoronha',
- 'Brazil/East',
- 'Brazil/West',
- 'CET',
- 'CST6CDT',
- 'Canada/Atlantic',
- 'Canada/Central',
- 'Canada/East-Saskatchewan',
- 'Canada/Eastern',
- 'Canada/Mountain',
- 'Canada/Newfoundland',
- 'Canada/Pacific',
- 'Canada/Saskatchewan',
- 'Canada/Yukon',
- 'Chile/Continental',
- 'Chile/EasterIsland',
- 'Cuba',
- 'EET',
- 'EST',
- 'EST5EDT',
- 'Egypt',
- 'Eire',
- 'Etc/GMT',
- 'Etc/GMT+0',
- 'Etc/GMT+1',
- 'Etc/GMT+10',
- 'Etc/GMT+11',
- 'Etc/GMT+12',
- 'Etc/GMT+2',
- 'Etc/GMT+3',
- 'Etc/GMT+4',
- 'Etc/GMT+5',
- 'Etc/GMT+6',
- 'Etc/GMT+7',
- 'Etc/GMT+8',
- 'Etc/GMT+9',
- 'Etc/GMT-0',
- 'Etc/GMT-1',
- 'Etc/GMT-10',
- 'Etc/GMT-11',
- 'Etc/GMT-12',
- 'Etc/GMT-13',
- 'Etc/GMT-14',
- 'Etc/GMT-2',
- 'Etc/GMT-3',
- 'Etc/GMT-4',
- 'Etc/GMT-5',
- 'Etc/GMT-6',
- 'Etc/GMT-7',
- 'Etc/GMT-8',
- 'Etc/GMT-9',
- 'Etc/GMT0',
- 'Etc/Greenwich',
- 'Etc/UCT',
- 'Etc/UTC',
- 'Etc/Universal',
- 'Etc/Zulu',
- 'Europe/Amsterdam',
- 'Europe/Andorra',
- 'Europe/Athens',
- 'Europe/Belfast',
- 'Europe/Belgrade',
- 'Europe/Berlin',
- 'Europe/Bratislava',
- 'Europe/Brussels',
- 'Europe/Bucharest',
- 'Europe/Budapest',
- 'Europe/Chisinau',
- 'Europe/Copenhagen',
- 'Europe/Dublin',
- 'Europe/Gibraltar',
- 'Europe/Guernsey',
- 'Europe/Helsinki',
- 'Europe/Isle_of_Man',
- 'Europe/Istanbul',
- 'Europe/Jersey',
- 'Europe/Kaliningrad',
- 'Europe/Kiev',
- 'Europe/Lisbon',
- 'Europe/Ljubljana',
- 'Europe/London',
- 'Europe/Luxembourg',
- 'Europe/Madrid',
- 'Europe/Malta',
- 'Europe/Mariehamn',
- 'Europe/Minsk',
- 'Europe/Monaco',
- 'Europe/Moscow',
- 'Europe/Nicosia',
- 'Europe/Oslo',
- 'Europe/Paris',
- 'Europe/Prague',
- 'Europe/Riga',
- 'Europe/Rome',
- 'Europe/Samara',
- 'Europe/San_Marino',
- 'Europe/Sarajevo',
- 'Europe/Simferopol',
- 'Europe/Skopje',
- 'Europe/Sofia',
- 'Europe/Stockholm',
- 'Europe/Tallinn',
- 'Europe/Tirane',
- 'Europe/Tiraspol',
- 'Europe/Uzhgorod',
- 'Europe/Vaduz',
- 'Europe/Vatican',
- 'Europe/Vienna',
- 'Europe/Vilnius',
- 'Europe/Volgograd',
- 'Europe/Warsaw',
- 'Europe/Zagreb',
- 'Europe/Zaporozhye',
- 'Europe/Zurich',
- 'GB',
- 'GB-Eire',
- 'GMT',
- 'GMT+0',
- 'GMT-0',
- 'GMT0',
- 'Greenwich',
- 'HST',
- 'Hongkong',
- 'Iceland',
- 'Indian/Antananarivo',
- 'Indian/Chagos',
- 'Indian/Christmas',
- 'Indian/Cocos',
- 'Indian/Comoro',
- 'Indian/Kerguelen',
- 'Indian/Mahe',
- 'Indian/Maldives',
- 'Indian/Mauritius',
- 'Indian/Mayotte',
- 'Indian/Reunion',
- 'Iran',
- 'Israel',
- 'Jamaica',
- 'Japan',
- 'Kwajalein',
- 'Libya',
- 'MET',
- 'MST',
- 'MST7MDT',
- 'Mexico/BajaNorte',
- 'Mexico/BajaSur',
- 'Mexico/General',
- 'NZ',
- 'NZ-CHAT',
- 'Navajo',
- 'PRC',
- 'PST8PDT',
- 'Pacific/Apia',
- 'Pacific/Auckland',
- 'Pacific/Chatham',
- 'Pacific/Easter',
- 'Pacific/Efate',
- 'Pacific/Enderbury',
- 'Pacific/Fakaofo',
- 'Pacific/Fiji',
- 'Pacific/Funafuti',
- 'Pacific/Galapagos',
- 'Pacific/Gambier',
- 'Pacific/Guadalcanal',
- 'Pacific/Guam',
- 'Pacific/Honolulu',
- 'Pacific/Johnston',
- 'Pacific/Kiritimati',
- 'Pacific/Kosrae',
- 'Pacific/Kwajalein',
- 'Pacific/Majuro',
- 'Pacific/Marquesas',
- 'Pacific/Midway',
- 'Pacific/Nauru',
- 'Pacific/Niue',
- 'Pacific/Norfolk',
- 'Pacific/Noumea',
- 'Pacific/Pago_Pago',
- 'Pacific/Palau',
- 'Pacific/Pitcairn',
- 'Pacific/Ponape',
- 'Pacific/Port_Moresby',
- 'Pacific/Rarotonga',
- 'Pacific/Saipan',
- 'Pacific/Samoa',
- 'Pacific/Tahiti',
- 'Pacific/Tarawa',
- 'Pacific/Tongatapu',
- 'Pacific/Truk',
- 'Pacific/Wake',
- 'Pacific/Wallis',
- 'Pacific/Yap',
- 'Poland',
- 'Portugal',
- 'ROC',
- 'ROK',
- 'Singapore',
- 'Turkey',
- 'UCT',
- 'US/Alaska',
- 'US/Aleutian',
- 'US/Arizona',
- 'US/Central',
- 'US/East-Indiana',
- 'US/Eastern',
- 'US/Hawaii',
- 'US/Indiana-Starke',
- 'US/Michigan',
- 'US/Mountain',
- 'US/Pacific',
- 'US/Pacific-New',
- 'US/Samoa',
- 'UTC',
- 'Universal',
- 'W-SU',
- 'WET',
- 'Zulu',
- 'posixrules']

Deleted: Zope3/branches/3.4/src/pytz/reference.py
===================================================================
--- Zope3/branches/3.4/src/pytz/reference.py	2007-08-12 12:58:20 UTC (rev 78775)
+++ Zope3/branches/3.4/src/pytz/reference.py	2007-08-12 13:01:31 UTC (rev 78776)
@@ -1,127 +0,0 @@
-'''
-Reference tzinfo implementations from the Python docs.
-Used for testing against as they are only correct for the years
-1987 to 2006. Do not use these for real code.
-'''
-
-from datetime import tzinfo, timedelta, datetime
-from pytz import utc, UTC, HOUR, ZERO
-
-# A class building tzinfo objects for fixed-offset time zones.
-# Note that FixedOffset(0, "UTC") is a different way to build a
-# UTC tzinfo object.
-
-class FixedOffset(tzinfo):
-    """Fixed offset in minutes east from UTC."""
-
-    def __init__(self, offset, name):
-        self.__offset = timedelta(minutes = offset)
-        self.__name = name
-
-    def utcoffset(self, dt):
-        return self.__offset
-
-    def tzname(self, dt):
-        return self.__name
-
-    def dst(self, dt):
-        return ZERO
-
-# A class capturing the platform's idea of local time.
-
-import time as _time
-
-STDOFFSET = timedelta(seconds = -_time.timezone)
-if _time.daylight:
-    DSTOFFSET = timedelta(seconds = -_time.altzone)
-else:
-    DSTOFFSET = STDOFFSET
-
-DSTDIFF = DSTOFFSET - STDOFFSET
-
-class LocalTimezone(tzinfo):
-
-    def utcoffset(self, dt):
-        if self._isdst(dt):
-            return DSTOFFSET
-        else:
-            return STDOFFSET
-
-    def dst(self, dt):
-        if self._isdst(dt):
-            return DSTDIFF
-        else:
-            return ZERO
-
-    def tzname(self, dt):
-        return _time.tzname[self._isdst(dt)]
-
-    def _isdst(self, dt):
-        tt = (dt.year, dt.month, dt.day,
-              dt.hour, dt.minute, dt.second,
-              dt.weekday(), 0, -1)
-        stamp = _time.mktime(tt)
-        tt = _time.localtime(stamp)
-        return tt.tm_isdst > 0
-
-Local = LocalTimezone()
-
-# A complete implementation of current DST rules for major US time zones.
-
-def first_sunday_on_or_after(dt):
-    days_to_go = 6 - dt.weekday()
-    if days_to_go:
-        dt += timedelta(days_to_go)
-    return dt
-
-# In the US, DST starts at 2am (standard time) on the first Sunday in April.
-DSTSTART = datetime(1, 4, 1, 2)
-# and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct.
-# which is the first Sunday on or after Oct 25.
-DSTEND = datetime(1, 10, 25, 1)
-
-class USTimeZone(tzinfo):
-
-    def __init__(self, hours, reprname, stdname, dstname):
-        self.stdoffset = timedelta(hours=hours)
-        self.reprname = reprname
-        self.stdname = stdname
-        self.dstname = dstname
-
-    def __repr__(self):
-        return self.reprname
-
-    def tzname(self, dt):
-        if self.dst(dt):
-            return self.dstname
-        else:
-            return self.stdname
-
-    def utcoffset(self, dt):
-        return self.stdoffset + self.dst(dt)
-
-    def dst(self, dt):
-        if dt is None or dt.tzinfo is None:
-            # An exception may be sensible here, in one or both cases.
-            # It depends on how you want to treat them.  The default
-            # fromutc() implementation (called by the default astimezone()
-            # implementation) passes a datetime with dt.tzinfo is self.
-            return ZERO
-        assert dt.tzinfo is self
-
-        # Find first Sunday in April & the last in October.
-        start = first_sunday_on_or_after(DSTSTART.replace(year=dt.year))
-        end = first_sunday_on_or_after(DSTEND.replace(year=dt.year))
-
-        # Can't compare naive to aware objects, so strip the timezone from
-        # dt first.
-        if start <= dt.replace(tzinfo=None) < end:
-            return HOUR
-        else:
-            return ZERO
-
-Eastern  = USTimeZone(-5, "Eastern",  "EST", "EDT")
-Central  = USTimeZone(-6, "Central",  "CST", "CDT")
-Mountain = USTimeZone(-7, "Mountain", "MST", "MDT")
-Pacific  = USTimeZone(-8, "Pacific",  "PST", "PDT")
-

Deleted: Zope3/branches/3.4/src/pytz/tzinfo.py
===================================================================
--- Zope3/branches/3.4/src/pytz/tzinfo.py	2007-08-12 12:58:20 UTC (rev 78775)
+++ Zope3/branches/3.4/src/pytz/tzinfo.py	2007-08-12 13:01:31 UTC (rev 78776)
@@ -1,379 +0,0 @@
-'''Base classes and helpers for building zone specific tzinfo classes'''
-
-from datetime import datetime, timedelta, tzinfo
-from bisect import bisect_right
-from sets import Set
-
-import pytz
-
-__all__ = []
-
-_timedelta_cache = {}
-def memorized_timedelta(seconds):
-    '''Create only one instance of each distinct timedelta'''
-    try:
-        return _timedelta_cache[seconds]
-    except KeyError:
-        delta = timedelta(seconds=seconds)
-        _timedelta_cache[seconds] = delta
-        return delta
-
-_datetime_cache = {}
-def memorized_datetime(*args):
-    '''Create only one instance of each distinct datetime'''
-    try:
-        return _datetime_cache[args]
-    except KeyError:
-        dt = datetime(*args)
-        _datetime_cache[args] = dt
-        return dt
-
-_ttinfo_cache = {}
-def memorized_ttinfo(*args):
-    '''Create only one instance of each distinct tuple'''
-    try:
-        return _ttinfo_cache[args]
-    except KeyError:
-        ttinfo = (
-                memorized_timedelta(args[0]),
-                memorized_timedelta(args[1]),
-                args[2]
-                )
-        _ttinfo_cache[args] = ttinfo
-        return ttinfo
-
-_notime = memorized_timedelta(0)
-
-def _to_seconds(td):
-    '''Convert a timedelta to seconds'''
-    return td.seconds + td.days * 24 * 60 * 60
-
-
-class BaseTzInfo(tzinfo):
-    # Overridden in subclass
-    _utcoffset = None
-    _tzname = None
-    zone = None
-
-    def __str__(self):
-        return self.zone
-
-
-class StaticTzInfo(BaseTzInfo):
-    '''A timezone that has a constant offset from UTC
-
-    These timezones are rare, as most regions have changed their
-    offset from UTC at some point in their history
-    '''
-    def fromutc(self, dt):
-        '''See datetime.tzinfo.fromutc'''
-        return (dt + self._utcoffset).replace(tzinfo=self)
-    
-    def utcoffset(self,dt):
-        '''See datetime.tzinfo.utcoffset'''
-        return self._utcoffset
-
-    def dst(self,dt):
-        '''See datetime.tzinfo.dst'''
-        return _notime
-
-    def tzname(self,dt):
-        '''See datetime.tzinfo.tzname'''
-        return self._tzname
-
-    def localize(self, dt, is_dst=False):
-        '''Convert naive time to local time'''
-        if dt.tzinfo is not None:
-            raise ValueError, 'Not naive datetime (tzinfo is already set)'
-        return dt.replace(tzinfo=self)
-
-    def normalize(self, dt, is_dst=False):
-        '''Correct the timezone information on the given datetime'''
-        if dt.tzinfo is None:
-            raise ValueError, 'Naive time - no tzinfo set'
-        return dt.replace(tzinfo=self)
-
-    def __repr__(self):
-        return '<StaticTzInfo %r>' % (self.zone,)
-
-    def __reduce__(self):
-        # Special pickle to zone remains a singleton and to cope with
-        # database changes. 
-        return pytz._p, (self.zone,)
-
-
-class DstTzInfo(BaseTzInfo):
-    '''A timezone that has a variable offset from UTC
-   
-    The offset might change if daylight savings time comes into effect,
-    or at a point in history when the region decides to change their 
-    timezone definition. 
-
-    '''
-    # Overridden in subclass
-    _utc_transition_times = None # Sorted list of DST transition times in UTC
-    _transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
-                            # to _utc_transition_times entries
-    zone = None
-
-    # Set in __init__
-    _tzinfos = None
-    _dst = None # DST offset
-
-    def __init__(self, _inf=None, _tzinfos=None):
-        if _inf:
-            self._tzinfos = _tzinfos
-            self._utcoffset, self._dst, self._tzname = _inf
-        else:
-            _tzinfos = {}
-            self._tzinfos = _tzinfos
-            self._utcoffset, self._dst, self._tzname = self._transition_info[0]
-            _tzinfos[self._transition_info[0]] = self
-            for inf in self._transition_info[1:]:
-                if not _tzinfos.has_key(inf):
-                    _tzinfos[inf] = self.__class__(inf, _tzinfos)
-
-    def fromutc(self, dt):
-        '''See datetime.tzinfo.fromutc'''
-        dt = dt.replace(tzinfo=None)
-        idx = max(0, bisect_right(self._utc_transition_times, dt) - 1)
-        inf = self._transition_info[idx]
-        return (dt + inf[0]).replace(tzinfo=self._tzinfos[inf])
-
-    def normalize(self, dt):
-        '''Correct the timezone information on the given datetime
-
-        If date arithmetic crosses DST boundaries, the tzinfo
-        is not magically adjusted. This method normalizes the
-        tzinfo to the correct one.
-
-        To test, first we need to do some setup
-
-        >>> from pytz import timezone
-        >>> utc = timezone('UTC')
-        >>> eastern = timezone('US/Eastern')
-        >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
-
-        We next create a datetime right on an end-of-DST transition point,
-        the instant when the wallclocks are wound back one hour.
-
-        >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
-        >>> loc_dt = utc_dt.astimezone(eastern)
-        >>> loc_dt.strftime(fmt)
-        '2002-10-27 01:00:00 EST (-0500)'
-
-        Now, if we subtract a few minutes from it, note that the timezone
-        information has not changed.
-
-        >>> before = loc_dt - timedelta(minutes=10)
-        >>> before.strftime(fmt)
-        '2002-10-27 00:50:00 EST (-0500)'
-
-        But we can fix that by calling the normalize method
-
-        >>> before = eastern.normalize(before)
-        >>> before.strftime(fmt)
-        '2002-10-27 01:50:00 EDT (-0400)'
-
-        '''
-        if dt.tzinfo is None:
-            raise ValueError, 'Naive time - no tzinfo set'
-
-        # Convert dt in localtime to UTC
-        offset = dt.tzinfo._utcoffset
-        dt = dt.replace(tzinfo=None)
-        dt = dt - offset
-        # convert it back, and return it
-        return self.fromutc(dt)
-
-    def localize(self, dt, is_dst=False):
-        '''Convert naive time to local time.
-        
-        This method should be used to construct localtimes, rather
-        than passing a tzinfo argument to a datetime constructor.
-
-        is_dst is used to determine the correct timezone in the ambigous
-        period at the end of daylight savings time.
-        
-        >>> from pytz import timezone
-        >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
-        >>> amdam = timezone('Europe/Amsterdam')
-        >>> dt  = datetime(2004, 10, 31, 2, 0, 0)
-        >>> loc_dt1 = amdam.localize(dt, is_dst=True)
-        >>> loc_dt2 = amdam.localize(dt, is_dst=False)
-        >>> loc_dt1.strftime(fmt)
-        '2004-10-31 02:00:00 CEST (+0200)'
-        >>> loc_dt2.strftime(fmt)
-        '2004-10-31 02:00:00 CET (+0100)'
-        >>> str(loc_dt2 - loc_dt1)
-        '1:00:00'
-
-        Use is_dst=None to raise an AmbiguousTimeError for ambiguous
-        times at the end of daylight savings
-
-        >>> try:
-        ...     loc_dt1 = amdam.localize(dt, is_dst=None)
-        ... except AmbiguousTimeError:
-        ...     print 'Oops'
-        Oops
-
-        >>> loc_dt1 = amdam.localize(dt, is_dst=None)
-        Traceback (most recent call last):
-            [...]
-        AmbiguousTimeError: 2004-10-31 02:00:00
-
-        is_dst defaults to False
-        
-        >>> amdam.localize(dt) == amdam.localize(dt, False)
-        True
-
-        '''
-        if dt.tzinfo is not None:
-            raise ValueError, 'Not naive datetime (tzinfo is already set)'
-
-        # Find the possibly correct timezones. We probably just have one,
-        # but we might end up with two if we are in the end-of-DST
-        # transition period. Or possibly more in some particularly confused
-        # location...
-        possible_loc_dt = Set()
-        for tzinfo in self._tzinfos.values():
-            loc_dt = tzinfo.normalize(dt.replace(tzinfo=tzinfo))
-            if loc_dt.replace(tzinfo=None) == dt:
-                possible_loc_dt.add(loc_dt)
-
-        if len(possible_loc_dt) == 1:
-            return possible_loc_dt.pop()
-
-        # If told to be strict, raise an exception since we have an
-        # ambiguous case
-        if is_dst is None:
-            raise AmbiguousTimeError(dt)
-
-        # Filter out the possiblilities that don't match the requested
-        # is_dst
-        filtered_possible_loc_dt = [
-            p for p in possible_loc_dt
-                if bool(p.tzinfo._dst) == is_dst
-            ]
-
-        # Hopefully we only have one possibility left. Return it.
-        if len(filtered_possible_loc_dt) == 1:
-            return filtered_possible_loc_dt[0]
-
-        if len(filtered_possible_loc_dt) == 0:
-            filtered_possible_loc_dt = list(possible_loc_dt)
-
-        # If we get this far, we have in a wierd timezone transition
-        # where the clocks have been wound back but is_dst is the same
-        # in both (eg. Europe/Warsaw 1915 when they switched to CET).
-        # At this point, we just have to guess unless we allow more
-        # hints to be passed in (such as the UTC offset or abbreviation),
-        # but that is just getting silly.
-        #
-        # Choose the earliest (by UTC) applicable timezone.
-        def mycmp(a,b):
-            return cmp(
-                    a.replace(tzinfo=None) - a.tzinfo._utcoffset,
-                    b.replace(tzinfo=None) - b.tzinfo._utcoffset,
-                    )
-        filtered_possible_loc_dt.sort(mycmp)
-        return filtered_possible_loc_dt[0]
-        
-    def utcoffset(self, dt):
-        '''See datetime.tzinfo.utcoffset'''
-        return self._utcoffset
-
-    def dst(self, dt):
-        '''See datetime.tzinfo.dst'''
-        return self._dst
-
-    def tzname(self, dt):
-        '''See datetime.tzinfo.tzname'''
-        return self._tzname
-
-    def __repr__(self):
-        if self._dst:
-            dst = 'DST'
-        else:
-            dst = 'STD'
-        if self._utcoffset > _notime:
-            return '<DstTzInfo %r %s+%s %s>' % (
-                    self.zone, self._tzname, self._utcoffset, dst
-                )
-        else:
-            return '<DstTzInfo %r %s%s %s>' % (
-                    self.zone, self._tzname, self._utcoffset, dst
-                )
-
-    def __reduce__(self):
-        # Special pickle to zone remains a singleton and to cope with
-        # database changes.
-        return pytz._p, (
-                self.zone,
-                _to_seconds(self._utcoffset),
-                _to_seconds(self._dst),
-                self._tzname
-                )
-
-
-class AmbiguousTimeError(Exception):
-    '''Exception raised when attempting to create an ambiguous wallclock time.
-
-    At the end of a DST transition period, a particular wallclock time will
-    occur twice (once before the clocks are set back, once after). Both
-    possibilities may be correct, unless further information is supplied.
-
-    See DstTzInfo.normalize() for more info
-    '''
-       
-
-def unpickler(zone, utcoffset=None, dstoffset=None, tzname=None):
-    """Factory function for unpickling pytz tzinfo instances.
-    
-    This is shared for both StaticTzInfo and DstTzInfo instances, because
-    database changes could cause a zones implementation to switch between
-    these two base classes and we can't break pickles on a pytz version
-    upgrade.
-    """
-    # Raises a KeyError if zone no longer exists, which should never happen
-    # and would be a bug.
-    tz = pytz.timezone(zone)
-
-    # A StaticTzInfo - just return it
-    if utcoffset is None:
-        return tz
-
-    # This pickle was created from a DstTzInfo. We need to
-    # determine which of the list of tzinfo instances for this zone
-    # to use in order to restore the state of any datetime instances using
-    # it correctly.
-    utcoffset = memorized_timedelta(utcoffset)
-    dstoffset = memorized_timedelta(dstoffset)
-    try:
-        return tz._tzinfos[(utcoffset, dstoffset, tzname)]
-    except KeyError:
-        # The particular state requested in this timezone no longer exists.
-        # This indicates a corrupt pickle, or the timezone database has been
-        # corrected violently enough to make this particular
-        # (utcoffset,dstoffset) no longer exist in the zone, or the
-        # abbreviation has been changed.
-        pass
-
-    # See if we can find an entry differing only by tzname. Abbreviations
-    # get changed from the initial guess by the database maintainers to
-    # match reality when this information is discovered.
-    for localized_tz in tz._tzinfos.values():
-        if (localized_tz._utcoffset == utcoffset
-                and localized_tz._dst == dstoffset):
-            return localized_tz
-
-    # This (utcoffset, dstoffset) information has been removed from the
-    # zone. Add it back. This might occur when the database maintainers have
-    # corrected incorrect information. datetime instances using this
-    # incorrect information will continue to do so, exactly as they were
-    # before being pickled. This is purely an overly paranoid safety net - I
-    # doubt this will ever been needed in real life.
-    inf = (utcoffset, dstoffset, tzname)
-    tz._tzinfos[inf] = tz.__class__(inf, tz._tzinfos)
-    return tz._tzinfos[inf]
-

Deleted: Zope3/branches/3.4/src/pytz/zone.tab
===================================================================
--- Zope3/branches/3.4/src/pytz/zone.tab	2007-08-12 12:58:20 UTC (rev 78775)
+++ Zope3/branches/3.4/src/pytz/zone.tab	2007-08-12 13:01:31 UTC (rev 78776)
@@ -1,416 +0,0 @@
-# %W%
-#
-# TZ zone descriptions
-#
-# From Paul Eggert (1996-08-05):
-#
-# This file contains a table with the following columns:
-# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
-# 2.  Latitude and longitude of the zone's principal location
-#     in ISO 6709 sign-degrees-minutes-seconds format,
-#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
-#     first latitude (+ is north), then longitude (+ is east).
-# 3.  Zone name used in value of TZ environment variable.
-# 4.  Comments; present if and only if the country has multiple rows.
-#
-# Columns are separated by a single tab.
-# The table is sorted first by country, then an order within the country that
-# (1) makes some geographical sense, and
-# (2) puts the most populous zones first, where that does not contradict (1).
-#
-# Lines beginning with `#' are comments.
-#
-#country-
-#code	coordinates	TZ			comments
-AD	+4230+00131	Europe/Andorra
-AE	+2518+05518	Asia/Dubai
-AF	+3431+06912	Asia/Kabul
-AG	+1703-06148	America/Antigua
-AI	+1812-06304	America/Anguilla
-AL	+4120+01950	Europe/Tirane
-AM	+4011+04430	Asia/Yerevan
-AN	+1211-06900	America/Curacao
-AO	-0848+01314	Africa/Luanda
-AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
-AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
-AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island
-AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
-AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
-AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
-AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
-AQ	-7824+10654	Antarctica/Vostok	Vostok Station, S Magnetic Pole
-AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Base, Terre Adelie
-AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
-AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
-AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
-AR	-2411-06518	America/Argentina/Jujuy	Jujuy (JY)
-AR	-2649-06513	America/Argentina/Tucuman	Tucuman (TM)
-AR	-2828-06547	America/Argentina/Catamarca	Catamarca (CT), Chubut (CH)
-AR	-2926-06651	America/Argentina/La_Rioja	La Rioja (LR)
-AR	-3132-06831	America/Argentina/San_Juan	San Juan (SJ)
-AR	-3253-06849	America/Argentina/Mendoza	Mendoza (MZ)
-AR	-5138-06913	America/Argentina/Rio_Gallegos	Santa Cruz (SC)
-AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)
-AS	-1416-17042	Pacific/Pago_Pago
-AT	+4813+01620	Europe/Vienna
-AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
-AU	-4253+14719	Australia/Hobart	Tasmania - most locations
-AU	-3956+14352	Australia/Currie	Tasmania - King Island
-AU	-3749+14458	Australia/Melbourne	Victoria
-AU	-3352+15113	Australia/Sydney	New South Wales - most locations
-AU	-3157+14127	Australia/Broken_Hill	New South Wales - Yancowinna
-AU	-2728+15302	Australia/Brisbane	Queensland - most locations
-AU	-2016+14900	Australia/Lindeman	Queensland - Holiday Islands
-AU	-3455+13835	Australia/Adelaide	South Australia
-AU	-1228+13050	Australia/Darwin	Northern Territory
-AU	-3157+11551	Australia/Perth	Western Australia
-AW	+1230-06858	America/Aruba
-AX	+6006+01957	Europe/Mariehamn
-AZ	+4023+04951	Asia/Baku
-BA	+4352+01825	Europe/Sarajevo
-BB	+1306-05937	America/Barbados
-BD	+2343+09025	Asia/Dhaka
-BE	+5050+00420	Europe/Brussels
-BF	+1222-00131	Africa/Ouagadougou
-BG	+4241+02319	Europe/Sofia
-BH	+2623+05035	Asia/Bahrain
-BI	-0323+02922	Africa/Bujumbura
-BJ	+0629+00237	Africa/Porto-Novo
-BM	+3217-06446	Atlantic/Bermuda
-BN	+0456+11455	Asia/Brunei
-BO	-1630-06809	America/La_Paz
-BR	-0351-03225	America/Noronha	Atlantic islands
-BR	-0127-04829	America/Belem	Amapa, E Para
-BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
-BR	-0803-03454	America/Recife	Pernambuco
-BR	-0712-04812	America/Araguaina	Tocantins
-BR	-0940-03543	America/Maceio	Alagoas, Sergipe
-BR	-1259-03831	America/Bahia	Bahia
-BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
-BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul
-BR	-1535-05605	America/Cuiaba	Mato Grosso
-BR	-0846-06354	America/Porto_Velho	W Para, Rondonia
-BR	+0249-06040	America/Boa_Vista	Roraima
-BR	-0308-06001	America/Manaus	E Amazonas
-BR	-0640-06952	America/Eirunepe	W Amazonas
-BR	-0958-06748	America/Rio_Branco	Acre
-BS	+2505-07721	America/Nassau
-BT	+2728+08939	Asia/Thimphu
-BW	-2545+02555	Africa/Gaborone
-BY	+5354+02734	Europe/Minsk
-BZ	+1730-08812	America/Belize
-CA	+4734-05243	America/St_Johns	Newfoundland Time, including SE Labrador
-CA	+4439-06336	America/Halifax	Atlantic Time - Nova Scotia (most places), PEI
-CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
-CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick
-CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations
-CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore
-CA	+4531-07334	America/Montreal	Eastern Time - Quebec - most locations
-CA	+4339-07923	America/Toronto	Eastern Time - Ontario - most locations
-CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
-CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
-CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
-CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut
-CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
-CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
-CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
-CA	+4843-09434	America/Rainy_River	Central Time - Rainy River & Fort Frances, Ontario
-CA	+6903-10505	America/Cambridge_Bay	Central Time - west Nunavut
-CA	+5024-10439	America/Regina	Central Standard Time - Saskatchewan - most locations
-CA	+5017-10750	America/Swift_Current	Central Standard Time - Saskatchewan - midwest
-CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia & west Saskatchewan
-CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
-CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
-CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
-CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
-CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
-CA	+6404-13925	America/Dawson	Pacific Time - north Yukon
-CC	-1210+09655	Indian/Cocos
-CD	-0418+01518	Africa/Kinshasa	west Dem. Rep. of Congo
-CD	-1140+02728	Africa/Lubumbashi	east Dem. Rep. of Congo
-CF	+0422+01835	Africa/Bangui
-CG	-0416+01517	Africa/Brazzaville
-CH	+4723+00832	Europe/Zurich
-CI	+0519-00402	Africa/Abidjan
-CK	-2114-15946	Pacific/Rarotonga
-CL	-3327-07040	America/Santiago	most locations
-CL	-2710-10927	Pacific/Easter	Easter Island & Sala y Gomez
-CM	+0403+00942	Africa/Douala
-CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
-CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
-CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
-CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
-CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
-CO	+0436-07405	America/Bogota
-CR	+0956-08405	America/Costa_Rica
-CS	+4450+02030	Europe/Belgrade
-CU	+2308-08222	America/Havana
-CV	+1455-02331	Atlantic/Cape_Verde
-CX	-1025+10543	Indian/Christmas
-CY	+3510+03322	Asia/Nicosia
-CZ	+5005+01426	Europe/Prague
-DE	+5230+01322	Europe/Berlin
-DJ	+1136+04309	Africa/Djibouti
-DK	+5540+01235	Europe/Copenhagen
-DM	+1518-06124	America/Dominica
-DO	+1828-06954	America/Santo_Domingo
-DZ	+3647+00303	Africa/Algiers
-EC	-0210-07950	America/Guayaquil	mainland
-EC	-0054-08936	Pacific/Galapagos	Galapagos Islands
-EE	+5925+02445	Europe/Tallinn
-EG	+3003+03115	Africa/Cairo
-EH	+2709-01312	Africa/El_Aaiun
-ER	+1520+03853	Africa/Asmera
-ES	+4024-00341	Europe/Madrid	mainland
-ES	+3553-00519	Africa/Ceuta	Ceuta & Melilla
-ES	+2806-01524	Atlantic/Canary	Canary Islands
-ET	+0902+03842	Africa/Addis_Ababa
-FI	+6010+02458	Europe/Helsinki
-FJ	-1808+17825	Pacific/Fiji
-FK	-5142-05751	Atlantic/Stanley
-FM	+0725+15147	Pacific/Truk	Truk (Chuuk) and Yap
-FM	+0658+15813	Pacific/Ponape	Ponape (Pohnpei)
-FM	+0519+16259	Pacific/Kosrae	Kosrae
-FO	+6201-00646	Atlantic/Faeroe
-FR	+4852+00220	Europe/Paris
-GA	+0023+00927	Africa/Libreville
-GB	+512830-0001845	Europe/London
-GD	+1203-06145	America/Grenada
-GE	+4143+04449	Asia/Tbilisi
-GF	+0456-05220	America/Cayenne
-GG	+4927-00232	Europe/Guernsey
-GH	+0533-00013	Africa/Accra
-GI	+3608-00521	Europe/Gibraltar
-GL	+6411-05144	America/Godthab	most locations
-GL	+7646-01840	America/Danmarkshavn	east coast, north of Scoresbysund
-GL	+7029-02158	America/Scoresbysund	Scoresbysund / Ittoqqortoormiit
-GL	+7634-06847	America/Thule	Thule / Pituffik
-GM	+1328-01639	Africa/Banjul
-GN	+0931-01343	Africa/Conakry
-GP	+1614-06132	America/Guadeloupe
-GQ	+0345+00847	Africa/Malabo
-GR	+3758+02343	Europe/Athens
-GS	-5416-03632	Atlantic/South_Georgia
-GT	+1438-09031	America/Guatemala
-GU	+1328+14445	Pacific/Guam
-GW	+1151-01535	Africa/Bissau
-GY	+0648-05810	America/Guyana
-HK	+2217+11409	Asia/Hong_Kong
-HN	+1406-08713	America/Tegucigalpa
-HR	+4548+01558	Europe/Zagreb
-HT	+1832-07220	America/Port-au-Prince
-HU	+4730+01905	Europe/Budapest
-ID	-0610+10648	Asia/Jakarta	Java & Sumatra
-ID	-0002+10920	Asia/Pontianak	west & central Borneo
-ID	-0507+11924	Asia/Makassar	east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
-ID	-0232+14042	Asia/Jayapura	Irian Jaya & the Moluccas
-IE	+5320-00615	Europe/Dublin
-IL	+3146+03514	Asia/Jerusalem
-IM	+5409-00428	Europe/Isle_of_Man
-IN	+2232+08822	Asia/Calcutta
-IO	-0720+07225	Indian/Chagos
-IQ	+3321+04425	Asia/Baghdad
-IR	+3540+05126	Asia/Tehran
-IS	+6409-02151	Atlantic/Reykjavik
-IT	+4154+01229	Europe/Rome
-JE	+4912-00237	Europe/Jersey
-JM	+1800-07648	America/Jamaica
-JO	+3157+03556	Asia/Amman
-JP	+353916+1394441	Asia/Tokyo
-KE	-0117+03649	Africa/Nairobi
-KG	+4254+07436	Asia/Bishkek
-KH	+1133+10455	Asia/Phnom_Penh
-KI	+0125+17300	Pacific/Tarawa	Gilbert Islands
-KI	-0308-17105	Pacific/Enderbury	Phoenix Islands
-KI	+0152-15720	Pacific/Kiritimati	Line Islands
-KM	-1141+04316	Indian/Comoro
-KN	+1718-06243	America/St_Kitts
-KP	+3901+12545	Asia/Pyongyang
-KR	+3733+12658	Asia/Seoul
-KW	+2920+04759	Asia/Kuwait
-KY	+1918-08123	America/Cayman
-KZ	+4315+07657	Asia/Almaty	most locations
-KZ	+4448+06528	Asia/Qyzylorda	Qyzylorda (Kyzylorda, Kzyl-Orda)
-KZ	+5017+05710	Asia/Aqtobe	Aqtobe (Aktobe)
-KZ	+4431+05016	Asia/Aqtau	Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
-KZ	+5113+05121	Asia/Oral	West Kazakhstan
-LA	+1758+10236	Asia/Vientiane
-LB	+3353+03530	Asia/Beirut
-LC	+1401-06100	America/St_Lucia
-LI	+4709+00931	Europe/Vaduz
-LK	+0656+07951	Asia/Colombo
-LR	+0618-01047	Africa/Monrovia
-LS	-2928+02730	Africa/Maseru
-LT	+5441+02519	Europe/Vilnius
-LU	+4936+00609	Europe/Luxembourg
-LV	+5657+02406	Europe/Riga
-LY	+3254+01311	Africa/Tripoli
-MA	+3339-00735	Africa/Casablanca
-MC	+4342+00723	Europe/Monaco
-MD	+4700+02850	Europe/Chisinau
-MG	-1855+04731	Indian/Antananarivo
-MH	+0709+17112	Pacific/Majuro	most locations
-MH	+0905+16720	Pacific/Kwajalein	Kwajalein
-MK	+4159+02126	Europe/Skopje
-ML	+1239-00800	Africa/Bamako
-MM	+1647+09610	Asia/Rangoon
-MN	+4755+10653	Asia/Ulaanbaatar	most locations
-MN	+4801+09139	Asia/Hovd	Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
-MN	+4804+11430	Asia/Choibalsan	Dornod, Sukhbaatar
-MO	+2214+11335	Asia/Macau
-MP	+1512+14545	Pacific/Saipan
-MQ	+1436-06105	America/Martinique
-MR	+1806-01557	Africa/Nouakchott
-MS	+1643-06213	America/Montserrat
-MT	+3554+01431	Europe/Malta
-MU	-2010+05730	Indian/Mauritius
-MV	+0410+07330	Indian/Maldives
-MW	-1547+03500	Africa/Blantyre
-MX	+1924-09909	America/Mexico_City	Central Time - most locations
-MX	+2105-08646	America/Cancun	Central Time - Quintana Roo
-MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan
-MX	+2540-10019	America/Monterrey	Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
-MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa
-MX	+2838-10605	America/Chihuahua	Mountain Time - Chihuahua
-MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
-MX	+3232-11701	America/Tijuana	Pacific Time
-MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia
-MY	+0133+11020	Asia/Kuching	Sabah & Sarawak
-MZ	-2558+03235	Africa/Maputo
-NA	-2234+01706	Africa/Windhoek
-NC	-2216+16530	Pacific/Noumea
-NE	+1331+00207	Africa/Niamey
-NF	-2903+16758	Pacific/Norfolk
-NG	+0627+00324	Africa/Lagos
-NI	+1209-08617	America/Managua
-NL	+5222+00454	Europe/Amsterdam
-NO	+5955+01045	Europe/Oslo
-NP	+2743+08519	Asia/Katmandu
-NR	-0031+16655	Pacific/Nauru
-NU	-1901+16955	Pacific/Niue
-NZ	-3652+17446	Pacific/Auckland	most locations
-NZ	-4357-17633	Pacific/Chatham	Chatham Islands
-OM	+2336+05835	Asia/Muscat
-PA	+0858-07932	America/Panama
-PE	-1203-07703	America/Lima
-PF	-1732-14934	Pacific/Tahiti	Society Islands
-PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
-PF	-2308-13457	Pacific/Gambier	Gambier Islands
-PG	-0930+14710	Pacific/Port_Moresby
-PH	+1435+12100	Asia/Manila
-PK	+2452+06703	Asia/Karachi
-PL	+5215+02100	Europe/Warsaw
-PM	+4703-05620	America/Miquelon
-PN	-2504-13005	Pacific/Pitcairn
-PR	+182806-0660622	America/Puerto_Rico
-PS	+3130+03428	Asia/Gaza
-PT	+3843-00908	Europe/Lisbon	mainland
-PT	+3238-01654	Atlantic/Madeira	Madeira Islands
-PT	+3744-02540	Atlantic/Azores	Azores
-PW	+0720+13429	Pacific/Palau
-PY	-2516-05740	America/Asuncion
-QA	+2517+05132	Asia/Qatar
-RE	-2052+05528	Indian/Reunion
-RO	+4426+02606	Europe/Bucharest
-RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
-RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
-RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
-RU	+5312+05009	Europe/Samara	Moscow+01 - Samara, Udmurtia
-RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
-RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
-RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
-RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
-RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
-RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
-RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
-RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
-RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
-RU	+5301+15839	Asia/Kamchatka	Moscow+09 - Kamchatka
-RU	+6445+17729	Asia/Anadyr	Moscow+10 - Bering Sea
-RW	-0157+03004	Africa/Kigali
-SA	+2438+04643	Asia/Riyadh
-SB	-0932+16012	Pacific/Guadalcanal
-SC	-0440+05528	Indian/Mahe
-SD	+1536+03232	Africa/Khartoum
-SE	+5920+01803	Europe/Stockholm
-SG	+0117+10351	Asia/Singapore
-SH	-1555-00542	Atlantic/St_Helena
-SI	+4603+01431	Europe/Ljubljana
-SJ	+7800+01600	Arctic/Longyearbyen	Svalbard
-SJ	+7059-00805	Atlantic/Jan_Mayen	Jan Mayen
-SK	+4809+01707	Europe/Bratislava
-SL	+0830-01315	Africa/Freetown
-SM	+4355+01228	Europe/San_Marino
-SN	+1440-01726	Africa/Dakar
-SO	+0204+04522	Africa/Mogadishu
-SR	+0550-05510	America/Paramaribo
-ST	+0020+00644	Africa/Sao_Tome
-SV	+1342-08912	America/El_Salvador
-SY	+3330+03618	Asia/Damascus
-SZ	-2618+03106	Africa/Mbabane
-TC	+2128-07108	America/Grand_Turk
-TD	+1207+01503	Africa/Ndjamena
-TF	-492110+0701303	Indian/Kerguelen
-TG	+0608+00113	Africa/Lome
-TH	+1345+10031	Asia/Bangkok
-TJ	+3835+06848	Asia/Dushanbe
-TK	-0922-17114	Pacific/Fakaofo
-TL	-0833+12535	Asia/Dili
-TM	+3757+05823	Asia/Ashgabat
-TN	+3648+01011	Africa/Tunis
-TO	-2110+17510	Pacific/Tongatapu
-TR	+4101+02858	Europe/Istanbul
-TT	+1039-06131	America/Port_of_Spain
-TV	-0831+17913	Pacific/Funafuti
-TW	+2503+12130	Asia/Taipei
-TZ	-0648+03917	Africa/Dar_es_Salaam
-UA	+5026+03031	Europe/Kiev	most locations
-UA	+4837+02218	Europe/Uzhgorod	Ruthenia
-UA	+4750+03510	Europe/Zaporozhye	Zaporozh'ye, E Lugansk
-UA	+4457+03406	Europe/Simferopol	central Crimea
-UG	+0019+03225	Africa/Kampala
-UM	+1700-16830	Pacific/Johnston	Johnston Atoll
-UM	+2813-17722	Pacific/Midway	Midway Islands
-UM	+1917+16637	Pacific/Wake	Wake Island
-US	+404251-0740023	America/New_York	Eastern Time
-US	+421953-0830245	America/Detroit	Eastern Time - Michigan - most locations
-US	+381515-0854534	America/Kentucky/Louisville	Eastern Time - Kentucky - Louisville area
-US	+364947-0845057	America/Kentucky/Monticello	Eastern Time - Kentucky - Wayne County
-US	+394606-0860929	America/Indiana/Indianapolis	Eastern Time - Indiana - most locations
-US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County
-US	+411745-0863730	America/Indiana/Knox	Eastern Time - Indiana - Starke County
-US	+384452-0850402	America/Indiana/Vevay	Eastern Time - Indiana - Switzerland County
-US	+415100-0873900	America/Chicago	Central Time
-US	+384038-0873143	America/Indiana/Vincennes	Central Time - Indiana - Daviess, Dubois, Knox, Martin, Perry & Pulaski Counties
-US	+382931-0871643	America/Indiana/Petersburg	Central Time - Indiana - Pike County
-US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
-US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County
-US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)
-US	+394421-1045903	America/Denver	Mountain Time
-US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
-US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
-US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona
-US	+340308-1181434	America/Los_Angeles	Pacific Time
-US	+611305-1495401	America/Anchorage	Alaska Time
-US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
-US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
-US	+643004-1652423	America/Nome	Alaska Time - west Alaska
-US	+515248-1763929	America/Adak	Aleutian Islands
-US	+211825-1575130	Pacific/Honolulu	Hawaii
-UY	-3453-05611	America/Montevideo
-UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
-UZ	+4120+06918	Asia/Tashkent	east Uzbekistan
-VA	+4154+01227	Europe/Vatican
-VC	+1309-06114	America/St_Vincent
-VE	+1030-06656	America/Caracas
-VG	+1827-06437	America/Tortola
-VI	+1821-06456	America/St_Thomas
-VN	+1045+10640	Asia/Saigon
-VU	-1740+16825	Pacific/Efate
-WF	-1318-17610	Pacific/Wallis
-WS	-1350-17144	Pacific/Apia
-YE	+1245+04512	Asia/Aden
-YT	-1247+04514	Indian/Mayotte
-ZA	-2615+02800	Africa/Johannesburg
-ZM	-1525+02817	Africa/Lusaka
-ZW	-1750+03103	Africa/Harare



More information about the Zope3-Checkins mailing list