[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