# timezone

The interface ITimeZoneProvider and ITimeZone are helpful to make timezone relevant time calculation.

## File information

File | common/interface/timezone.h
Classes | ITimeZoneProvider ITimeZone ITimeZoneDSTRange
Examples | Code Example
Data types | Timezone IDs Windows timezone mapping Copyright

# Classes

## ITimeZoneProvider

    class ITimeZoneProvider {
    public:
        static ITimeZone * GetTimeZone(const char * tzid, class IInstanceLog * const log);
    };

### Public functions

GetTimeZone
  Returns the ITimeZone instance for the given timezone id. It it will be the first time that timezone instance is requested, ITimeZoneProvider creates the instance and stores it to an internal list for later use. The instance also will be released automatically on application shutdown, so there is no need to release it from within your app (what acutally is not possible).

  #### Parameters

  const char * tzid | One of the timezone ids (see below)
  IInstanceLog * const log | An IInstance log instance used for logging in case of an error.

## ITimeZone

    class ITimeZone {
    protected:
        virtual ~ITimeZone() {}

    public:
        virtual const char * TimeZoneName();
        virtual const char * UTCName();
        virtual const char * PosixString();
        virtual long64 UTCDiff();
        virtual long64 DSTDiff();
        virtual long64 ToLocalTime(long64 utcTime);
        virtual long64 ToUTCTime(long64 localTime);
        virtual long64 RemoveDST(long64 timeStamp);
        virtual long64 AddDST(long64 timeStamp);
        virtual bool IsDST(long64 timeStamp, bool isLocalTime = false);
        virtual bool IsDST(ITimeZoneDSTRange * dstRange, long64 timeStamp, bool isLocalTime = false);
        virtual ITimeZoneDSTRange * GetDSTRange(long64 rangeStartDate, long64 rangeEndDate);
    };

Provides functionality for timezone handling. The idea of that interface is to provide some basic functions so that the application can make the necessary calculations.

### Public functions

TimeZoneName

  #### Return value

  Returns the name of the timezone which is the same as the TZ id used to get the timezone.
UTCName

  #### Return value

  Returns the utc name of the timezone, which actually is UTC + the time difference (e. G. "UTC+01:00").
PosixString

  #### Return value

  Returns the POSIX string of the timezone, something like UTC-1UTC-2,M3.5.0,M10.5.0/3
UTCDiff

  #### Return value

  Returns the difference of the timezone to UTC in milliseconds.
DSTDiff

  #### Return value

  Returns the difference during active daylight saving time of the timezone to UTC in milliseconds. A value of 0 indicates, that the timezone has not daylightsaving time.
ToLocalTime
  Converts the given time stamp to the timezones local time. The function considers daylightsaving time.

  #### Parameters

  long64 utcTime | The timestamp in UTC to convert to local time. Make sure that the timestamp given is UTC, or the result will be wrong.

ToUTCTime
  Converts the given local time to UTC using the rules defined by the timezone. The function considers daylightsaving time.

  #### Parameters

  long64 localTime | The timestamp in the timezones local time to convert to UTC. Make sure that the timestamp given is realy local time for the timezone, or the result will be wrong.

RemoveDST
  Removes the daylightsa ving time from the given timestamp, if the timestamp is during active daylight saving time. If not, the return value will be the same as the value given.

  #### Parameters

  long64 timeStamp | The timestamp to remove the daylight saving time value.

AddDST
  Add the daylight saving time difference to the given timestamp, if the timestamp points to active daylight saving time. If not, the return value is the same asa the value given.

  #### Parameters

  long64 timeStamp | The timestamp to add the daylightsaving time difference.

IsDST (overloaded)
  Checks if the given timestamp is during daylightsaving time or not.

  #### Parameters

  long64 timeStamp | The timeStamp to check.
  bool isLocalTime | (Default false) If true, the given timestamp is in local time, else in UTC.

IsDST (overloaded)
  Checks if the given timestamp is during daylightsaving time or not. Becuase some timezones have a lot of daylightsaving time transitions, you can pass an ITimeZoneDSTRange instance which only provides a range of it. This can optimize the check if there is need to call it frequently.

  #### Parameters

  ITimeZoneDSTRange * dstRange | An ITimeZoneDSTRange instance to provide the time range for the checks.
  long64 timeStamp | The timeStamp to check.
  bool isLocalTime | (Default false) If true, the given timestamp is in local time, else in UTC.

GetDSTRange
  If there is need to check a lot of timestamps calling IsDST(), it can be better to make the check only in a specified timerange (e. G. the timezone for Europe/Berlin provides timezone transitions back to 1900). So if the range of the minimum and maximum time to make a check is known, this can help to minimize the checks to be done. This function will create an ITimeZoneDSTRange instance which must be given to the overloaded IsDST() version.

  #### Parameters

  long64 rangeStartDate | The start timestamp for the desired range.
  long64 rangeStartDate | The end timestamp for the desired range.

  #### Return value

  The ITimeZoneDSTRange instance for the desired range. It must be released by the app when now longer used.

## ITimeZoneDSTRange

    class ITimeZoneDSTRange {
    public:
        ITimeZoneDSTRange() {};
        virtual ~ITimeZoneDSTRange() {};

        virtual class ITimeZone * TimeZone() = 0;
        virtual long64 RangeStart() = 0;
        virtual long64 RangeEnd() = 0;
    };

Some timezones have a lot of daylightsaving time transitions. But when there is need to a lot of ITimeZone::IsDST() checks, it can be helpful to define a range of minimum and maximum transition to make the checks. This can be done by the help of ITimeZoneDSTRange. To get a valid instance, use ITimeZone::GetDSTRange(). However, the instance must be released by the application.

### Public functions

TimeZone

  #### Return value

  Returns the instance of the ITimeZone instance the instance was created with. The daylightsaving time range is only valid for that timezone.
RangeStart

  #### Return value

  The end timestamp of the range.
RangeStart

  #### Return value

  Returns the end timestamp of the range.

## Code Example

    long64 now = ITime::TimeStampMilliseconds();

    char tstr[21];
    ITime::FormatTimeStampISO(tstr, sizeof(tstr), now);
    printf("Current time UTC: %s\n", tstr);

    ITimeZone * tzDE = ITimeZoneProvider::GetTimeZone(TZ_EUROPE_BERLIN, myLogInstance);
    ITime::FormatTimeStampISO(tstr, sizeof(tstr), tzDE->ToLocalTime(now));
    printf("Current time in Germany: %s\n", tstr);

    // Output:
    // Current time UTC: 2017-08-22T16:15:00
    // Current time in Germany: 2017-08-22T18:15:00

## Timezone IDs

The ITimeZone interface makes use of the tz database, provided by the underlying Linux OS. For each timezone exists an identifier. The list below is a set of defines to use for that ids. The names of the defines are selfexplaining.
List of tz-ids used by the tz database

- TZ_AFRICA_ABIDJAN
- TZ_AFRICA_ACCRA
- TZ_AFRICA_ALGIERS
- TZ_AFRICA_BISSAU
- TZ_AFRICA_CAIRO
- TZ_AFRICA_CASABLANCA
- TZ_AFRICA_CEUTA
- TZ_AFRICA_EL_AAIUN
- TZ_AFRICA_JOHANNESBURG
- TZ_AFRICA_KHARTOUM
- TZ_AFRICA_LAGOS
- TZ_AFRICA_MAPUTO
- TZ_AFRICA_MONROVIA
- TZ_AFRICA_NAIROBI
- TZ_AFRICA_NDJAMENA
- TZ_AFRICA_TRIPOLI
- TZ_AFRICA_TUNIS
- TZ_AFRICA_WINDHOEK
- TZ_AMERICA_ADAK
- TZ_AMERICA_ANCHORAGE
- TZ_AMERICA_ARAGUAINA
- TZ_AMERICA_ARGENTINA_BUENOS_AIRES
- TZ_AMERICA_ARGENTINA_CATAMARCA
- TZ_AMERICA_ARGENTINA_CORDOBA
- TZ_AMERICA_ARGENTINA_JUJUY
- TZ_AMERICA_ARGENTINA_LA_RIOJA
- TZ_AMERICA_ARGENTINA_MENDOZA
- TZ_AMERICA_ARGENTINA_RIO_GALLEGOS
- TZ_AMERICA_ARGENTINA_SALTA
- TZ_AMERICA_ARGENTINA_SAN_JUAN
- TZ_AMERICA_ARGENTINA_SAN_LUIS
- TZ_AMERICA_ARGENTINA_TUCUMAN
- TZ_AMERICA_ARGENTINA_USHUAIA
- TZ_AMERICA_ASUNCION
- TZ_AMERICA_ATIKOKAN
- TZ_AMERICA_BAHIA
- TZ_AMERICA_BAHIA_BANDERAS
- TZ_AMERICA_BARBADOS
- TZ_AMERICA_BELEM
- TZ_AMERICA_BELIZE
- TZ_AMERICA_BLANC_SABLON
- TZ_AMERICA_BOA_VISTA
- TZ_AMERICA_BOGOTA
- TZ_AMERICA_BOISE
- TZ_AMERICA_CAMBRIDGE_BAY
- TZ_AMERICA_CAMPO_GRANDE
- TZ_AMERICA_CANCUN
- TZ_AMERICA_CARACAS
- TZ_AMERICA_CAYENNE
- TZ_AMERICA_CHICAGO
- TZ_AMERICA_CHIHUAHUA
- TZ_AMERICA_COSTA_RICA
- TZ_AMERICA_CRESTON
- TZ_AMERICA_CUIABA
- TZ_AMERICA_CURACAO
- TZ_AMERICA_DANMARKSHAVN
- TZ_AMERICA_DAWSON
- TZ_AMERICA_DAWSON_CREEK
- TZ_AMERICA_DENVER
- TZ_AMERICA_DETROIT
- TZ_AMERICA_EDMONTON
- TZ_AMERICA_EIRUNEPE
- TZ_AMERICA_EL_SALVADOR
- TZ_AMERICA_FORT_NELSON
- TZ_AMERICA_FORTALEZA
- TZ_AMERICA_GLACE_BAY
- TZ_AMERICA_GODTHAB
- TZ_AMERICA_GOOSE_BAY
- TZ_AMERICA_GRAND_TURK
- TZ_AMERICA_GUATEMALA
- TZ_AMERICA_GUAYAQUIL
- TZ_AMERICA_GUYANA
- TZ_AMERICA_HALIFAX
- TZ_AMERICA_HAVANA
- TZ_AMERICA_HERMOSILLO
- TZ_AMERICA_INDIANA_INDIANAPOLIS
- TZ_AMERICA_INDIANA_KNOX
- TZ_AMERICA_INDIANA_MARENGO
- TZ_AMERICA_INDIANA_PETERSBURG
- TZ_AMERICA_INDIANA_TELL_CITY
- TZ_AMERICA_INDIANA_VEVAY
- TZ_AMERICA_INDIANA_VINCENNES
- TZ_AMERICA_INDIANA_WINAMAC
- TZ_AMERICA_INUVIK
- TZ_AMERICA_IQALUIT
- TZ_AMERICA_JAMAICA
- TZ_AMERICA_JUNEAU
- TZ_AMERICA_KENTUCKY_LOUISVILLE
- TZ_AMERICA_KENTUCKY_MONTICELLO
- TZ_AMERICA_LA_PAZ
- TZ_AMERICA_LIMA
- TZ_AMERICA_LOS_ANGELES
- TZ_AMERICA_MACEIO
- TZ_AMERICA_MANAGUA
- TZ_AMERICA_MANAUS
- TZ_AMERICA_MARTINIQUE
- TZ_AMERICA_MATAMOROS
- TZ_AMERICA_MAZATLAN
- TZ_AMERICA_MENOMINEE
- TZ_AMERICA_MERIDA
- TZ_AMERICA_METLAKATLA
- TZ_AMERICA_MEXICO_CITY
- TZ_AMERICA_MIQUELON
- TZ_AMERICA_MONCTON
- TZ_AMERICA_MONTERREY
- TZ_AMERICA_MONTEVIDEO
- TZ_AMERICA_NASSAU
- TZ_AMERICA_NEW_YORK
- TZ_AMERICA_NIPIGON
- TZ_AMERICA_NOME
- TZ_AMERICA_NORONHA
- TZ_AMERICA_NORTH_DAKOTA_BEULAH
- TZ_AMERICA_NORTH_DAKOTA_CENTER
- TZ_AMERICA_NORTH_DAKOTA_NEW_SALEM
- TZ_AMERICA_OJINAGA
- TZ_AMERICA_PANAMA
- TZ_AMERICA_PANGNIRTUNG
- TZ_AMERICA_PARAMARIBO
- TZ_AMERICA_PHOENIX
- TZ_AMERICA_PORT_OF_SPAIN
- TZ_AMERICA_PORT_AU_PRINCE
- TZ_AMERICA_PORTO_VELHO
- TZ_AMERICA_PUERTO_RICO
- TZ_AMERICA_PUNTA_ARENAS
- TZ_AMERICA_RAINY_RIVER
- TZ_AMERICA_RANKIN_INLET
- TZ_AMERICA_RECIFE
- TZ_AMERICA_REGINA
- TZ_AMERICA_RESOLUTE
- TZ_AMERICA_RIO_BRANCO
- TZ_AMERICA_SANTAREM
- TZ_AMERICA_SANTIAGO
- TZ_AMERICA_SANTO_DOMINGO
- TZ_AMERICA_SAO_PAULO
- TZ_AMERICA_SCORESBYSUND
- TZ_AMERICA_SITKA
- TZ_AMERICA_ST_JOHNS
- TZ_AMERICA_SWIFT_CURRENT
- TZ_AMERICA_TEGUCIGALPA
- TZ_AMERICA_THULE
- TZ_AMERICA_THUNDER_BAY
- TZ_AMERICA_TIJUANA
- TZ_AMERICA_TORONTO
- TZ_AMERICA_VANCOUVER
- TZ_AMERICA_WHITEHORSE
- TZ_AMERICA_WINNIPEG
- TZ_AMERICA_YAKUTAT
- TZ_AMERICA_YELLOWKNIFE
- TZ_ANTARCTICA_CASEY
- TZ_ANTARCTICA_DAVIS
- TZ_ANTARCTICA_DUMONTDURVILLE
- TZ_ANTARCTICA_MACQUARIE
- TZ_ANTARCTICA_MAWSON
- TZ_ANTARCTICA_PALMER
- TZ_ANTARCTICA_ROTHERA
- TZ_ANTARCTICA_SYOWA
- TZ_ANTARCTICA_TROLL
- TZ_ANTARCTICA_VOSTOK
- TZ_ASIA_ALMATY
- TZ_ASIA_AMMAN
- TZ_ASIA_ANADYR
- TZ_ASIA_AQTAU
- TZ_ASIA_AQTOBE
- TZ_ASIA_ASHGABAT
- TZ_ASIA_ATYRAU
- TZ_ASIA_BAGHDAD
- TZ_ASIA_BAKU
- TZ_ASIA_BANGKOK
- TZ_ASIA_BARNAUL
- TZ_ASIA_BEIRUT
- TZ_ASIA_BISHKEK
- TZ_ASIA_BRUNEI
- TZ_ASIA_CHITA
- TZ_ASIA_CHOIBALSAN
- TZ_ASIA_COLOMBO
- TZ_ASIA_DAMASCUS
- TZ_ASIA_DHAKA
- TZ_ASIA_DILI
- TZ_ASIA_DUBAI
- TZ_ASIA_DUSHANBE
- TZ_ASIA_FAMAGUSTA
- TZ_ASIA_GAZA
- TZ_ASIA_HEBRON
- TZ_ASIA_HO_CHI_MINH
- TZ_ASIA_HONG_KONG
- TZ_ASIA_HOVD
- TZ_ASIA_IRKUTSK
- TZ_ASIA_JAKARTA
- TZ_ASIA_JAYAPURA
- TZ_ASIA_JERUSALEM
- TZ_ASIA_KABUL
- TZ_ASIA_KAMCHATKA
- TZ_ASIA_KARACHI
- TZ_ASIA_KATHMANDU
- TZ_ASIA_KHANDYGA
- TZ_ASIA_KOLKATA
- TZ_ASIA_KRASNOYARSK
- TZ_ASIA_KUALA_LUMPUR
- TZ_ASIA_KUCHING
- TZ_ASIA_MACAU
- TZ_ASIA_MAGADAN
- TZ_ASIA_MAKASSAR
- TZ_ASIA_MANILA
- TZ_ASIA_NICOSIA
- TZ_ASIA_NOVOKUZNETSK
- TZ_ASIA_NOVOSIBIRSK
- TZ_ASIA_OMSK
- TZ_ASIA_ORAL
- TZ_ASIA_PONTIANAK
- TZ_ASIA_PYONGYANG
- TZ_ASIA_QATAR
- TZ_ASIA_QYZYLORDA
- TZ_ASIA_RIYADH
- TZ_ASIA_SAKHALIN
- TZ_ASIA_SAMARKAND
- TZ_ASIA_SEOUL
- TZ_ASIA_SHANGHAI
- TZ_ASIA_SINGAPORE
- TZ_ASIA_SREDNEKOLYMSK
- TZ_ASIA_TAIPEI
- TZ_ASIA_TASHKENT
- TZ_ASIA_TBILISI
- TZ_ASIA_TEHRAN
- TZ_ASIA_THIMPHU
- TZ_ASIA_TOKYO
- TZ_ASIA_TOMSK
- TZ_ASIA_ULAANBAATAR
- TZ_ASIA_URUMQI
- TZ_ASIA_UST_NERA
- TZ_ASIA_VLADIVOSTOK
- TZ_ASIA_YAKUTSK
- TZ_ASIA_YANGON
- TZ_ASIA_YEKATERINBURG
- TZ_ASIA_YEREVAN
- TZ_ATLANTIC_AZORES
- TZ_ATLANTIC_BERMUDA
- TZ_ATLANTIC_CANARY
- TZ_ATLANTIC_CAPE_VERDE
- TZ_ATLANTIC_FAROE
- TZ_ATLANTIC_MADEIRA
- TZ_ATLANTIC_REYKJAVIK
- TZ_ATLANTIC_SOUTH_GEORGIA
- TZ_ATLANTIC_STANLEY
- TZ_AUSTRALIA_ADELAIDE
- TZ_AUSTRALIA_BRISBANE
- TZ_AUSTRALIA_BROKEN_HILL
- TZ_AUSTRALIA_CURRIE
- TZ_AUSTRALIA_DARWIN
- TZ_AUSTRALIA_EUCLA
- TZ_AUSTRALIA_HOBART
- TZ_AUSTRALIA_LINDEMAN
- TZ_AUSTRALIA_LORD_HOWE
- TZ_AUSTRALIA_MELBOURNE
- TZ_AUSTRALIA_PERTH
- TZ_AUSTRALIA_SYDNEY
- TZ_EUROPE_AMSTERDAM
- TZ_EUROPE_ANDORRA
- TZ_EUROPE_ASTRAKHAN
- TZ_EUROPE_ATHENS
- TZ_EUROPE_BELGRADE
- TZ_EUROPE_BERLIN
- TZ_EUROPE_BRUSSELS
- TZ_EUROPE_BUCHAREST
- TZ_EUROPE_BUDAPEST
- TZ_EUROPE_CHISINAU
- TZ_EUROPE_COPENHAGEN
- TZ_EUROPE_DUBLIN
- TZ_EUROPE_GIBRALTAR
- TZ_EUROPE_HELSINKI
- TZ_EUROPE_ISTANBUL
- TZ_EUROPE_KALININGRAD
- TZ_EUROPE_KIEV
- TZ_EUROPE_KIROV
- TZ_EUROPE_LISBON
- TZ_EUROPE_LONDON
- TZ_EUROPE_LUXEMBOURG
- TZ_EUROPE_MADRID
- TZ_EUROPE_MALTA
- TZ_EUROPE_MINSK
- TZ_EUROPE_MONACO
- TZ_EUROPE_MOSCOW
- TZ_EUROPE_OSLO
- TZ_EUROPE_PARIS
- TZ_EUROPE_PRAGUE
- TZ_EUROPE_RIGA
- TZ_EUROPE_ROME
- TZ_EUROPE_SAMARA
- TZ_EUROPE_SARATOV
- TZ_EUROPE_SIMFEROPOL
- TZ_EUROPE_SOFIA
- TZ_EUROPE_STOCKHOLM
- TZ_EUROPE_TALLINN
- TZ_EUROPE_TIRANE
- TZ_EUROPE_ULYANOVSK
- TZ_EUROPE_UZHGOROD
- TZ_EUROPE_VIENNA
- TZ_EUROPE_VILNIUS
- TZ_EUROPE_VOLGOGRAD
- TZ_EUROPE_WARSAW
- TZ_EUROPE_ZAPOROZHYE
- TZ_EUROPE_ZURICH
- TZ_INDIAN_CHAGOS
- TZ_INDIAN_CHRISTMAS
- TZ_INDIAN_COCOS
- TZ_INDIAN_KERGUELEN
- TZ_INDIAN_MAHE
- TZ_INDIAN_MALDIVES
- TZ_INDIAN_MAURITIUS
- TZ_INDIAN_REUNION
- TZ_PACIFIC_APIA
- TZ_PACIFIC_AUCKLAND
- TZ_PACIFIC_BOUGAINVILLE
- TZ_PACIFIC_CHATHAM
- TZ_PACIFIC_CHUUK
- TZ_PACIFIC_EASTER
- TZ_PACIFIC_EFATE
- TZ_PACIFIC_ENDERBURY
- TZ_PACIFIC_FAKAOFO
- TZ_PACIFIC_FIJI
- TZ_PACIFIC_FUNAFUTI
- TZ_PACIFIC_GALAPAGOS
- TZ_PACIFIC_GAMBIER
- TZ_PACIFIC_GUADALCANAL
- TZ_PACIFIC_GUAM
- TZ_PACIFIC_HONOLULU
- TZ_PACIFIC_KIRITIMATI
- TZ_PACIFIC_KOSRAE
- TZ_PACIFIC_KWAJALEIN
- TZ_PACIFIC_MAJURO
- TZ_PACIFIC_MARQUESAS
- TZ_PACIFIC_NAURU
- TZ_PACIFIC_NIUE
- TZ_PACIFIC_NORFOLK
- TZ_PACIFIC_NOUMEA
- TZ_PACIFIC_PAGO_PAGO
- TZ_PACIFIC_PALAU
- TZ_PACIFIC_PITCAIRN
- TZ_PACIFIC_POHNPEI
- TZ_PACIFIC_PORT_MORESBY
- TZ_PACIFIC_RAROTONGA
- TZ_PACIFIC_TAHITI
- TZ_PACIFIC_TARAWA
- TZ_PACIFIC_TONGATAPU
- TZ_PACIFIC_WAKE
- TZ_PACIFIC_WALLIS

### Some additional items for the tz database

- TZ_GMT
- TZ_GMT0
- TZ_UTC
- TZ_WET // Western European Time
- TZ_MET // Central European Time
- TZ_EET // Eastern European Time
- TZ_EST // Eastern Standard Time (North America)
- TZ_MST // Mountain Standard Time
- TZ_HST // Hawaiian Standard Time
- TZ_GREENWICH // Mapped to TZ_GMT
- TZ_UNIVERSAL // Mapped to TZ_UTC
- TZ_ZULU // Mapped to TZ_UTC
- TZ_CST6CDT
- TZ_EST5EDT
- TZ_MST7MDT
- TZ_PST8PDT

## Windows TimeZone Mapping

Microsoft Windows uses an other type of TimeZone naming which ends up in less items. The following list of defines helps to build up a proper mapping. However, such a mapping always will be a compromise (the tz database is more detailed). The name of the defines are corespondig with the name of the Windows timezone, which should be selfexplaining. Because + and - are forbitten for define names, + had been replaced by P and - by M. Colons had been remove. So UTC+01:00 becomes UTC_M0100. The names like used by Windows itself can be found in the comments behind the mapping inside the timezone.h file.

- TZ_UTC_M1200_INTERNATIONAL_DATE_LINE_WEST
- TZ_UTC_M1100_COORDINATED_UNIVERSAL_TIME_11
- TZ_UTC_M1000_ALEUTIAN_ISLANDS
- TZ_UTC_M1000_HAWAII
- TZ_UTC_M0930_MARQUESAS_ISLANDS
- TZ_UTC_M0900_ALASKA
- TZ_UTC_M0900_COORDINATED_UNIVERSAL_TIME_09
- TZ_UTC_M0800_BAJA_CALIFORNIA
- TZ_UTC_M0800_COORDINATED_UNIVERSAL_TIME_08
- TZ_UTC_M0800_PACIFIC_TIME_US_CANADA
- TZ_UTC_M0700_ARIZONA
- TZ_UTC_M0700_CHIHUAHUA_LA_PAZ_MAZATLAN
- TZ_UTC_M0700_MOUNTAIN_TIME_US_CANADA
- TZ_UTC_M0600_CENTRAL_AMERICA
- TZ_UTC_M0600_CENTRAL_TIME_US_CANADA
- TZ_UTC_M0600_EASTER_ISLAND
- TZ_UTC_M0600_GUADALAJARA_MEXICO_CITY_MONTERREY
- TZ_UTC_M0600_SASKATCHEWAN
- TZ_UTC_M0500_BOGOTA_LIMA_QUITO_RIO_BRANCO
- TZ_UTC_M0500_CHETUMAL
- TZ_UTC_M0500_EASTERN_TIME_US_CANADA
- TZ_UTC_M0500_HAITI
- TZ_UTC_M0500_HAVANA
- TZ_UTC_M0500_INDIANA_EAST
- TZ_UTC_M0400_ASUNCION
- TZ_UTC_M0400_ATLANTIC_TIME_CANADA
- TZ_UTC_M0400_CARACAS
- TZ_UTC_M0400_CUIABA
- TZ_UTC_M0400_GEORGETOWN_LA_PAZ_MANAUS_SAN_JUAN
- TZ_UTC_M0400_SANTIAGO
- TZ_UTC_M0400_TURKS_AND_CAICOS
- TZ_UTC_M0330_NEWFOUNDLAND
- TZ_UTC_M0300_ARAGUAINA
- TZ_UTC_M0300_BRASILIA
- TZ_UTC_M0300_CAYENNE_FORTALEZA
- TZ_UTC_M0300_CITY_OF_BUENOS_AIRES
- TZ_UTC_M0300_GREENLAND
- TZ_UTC_M0300_MONTEVIDEO
- TZ_UTC_M0300_PUNTA_ARENAS
- TZ_UTC_M0300_SAINT_PIERRE_AND_MIQUELON
- TZ_UTC_M0300_SALVADOR
- TZ_UTC_M0200_COORDINATED_UNIVERSAL_TIME_02
- TZ_UTC_M0100_AZORES
- TZ_UTC_M0100_CABO_VERDE_IS
- TZ_UTC_COORDINATED_UNIVERSAL_TIME
- TZ_UTC_P0000_CASABLANCA
- TZ_UTC_P0000_DUBLIN_EDINBURGH_LISBON_LONDON
- TZ_UTC_P0000_MONROVIA_REYKJAVIK
- TZ_UTC_P0100_AMSTERDAM_BERLIN_BERN_ROME_STOCKHOLM_VIENNA
- TZ_UTC_P0100_BELGRADE_BRATISLAVA_BUDAPEST_LJUBLJANA_PRAGUE
- TZ_UTC_P0100_BRUSSELS_COPENHAGEN_MADRID_PARIS
- TZ_UTC_P0100_SARAJEVO_SKOPJE_WARSAW_ZAGREB
- TZ_UTC_P0100_WEST_CENTRAL_AFRICA
- TZ_UTC_P0100_WINDHOEK
- TZ_UTC_P0200_AMMAN
- TZ_UTC_P0200_ATHENS_BUCHAREST
- TZ_UTC_P0200_BEIRUT
- TZ_UTC_P0200_CAIRO
- TZ_UTC_P0200_CHISINAU
- TZ_UTC_P0200_DAMASCUS
- TZ_UTC_P0200_GAZA_HEBRON
- TZ_UTC_P0200_HARARE_PRETORIA
- TZ_UTC_P0200_HELSINKI_KYIV_RIGA_SOFIA_TALLINN_VILNIUS
- TZ_UTC_P0200_JERUSALEM
- TZ_UTC_P0200_KALININGRAD
- TZ_UTC_P0200_TRIPOLI
- TZ_UTC_P0300_BAGHDAD
- TZ_UTC_P0300_ISTANBUL
- TZ_UTC_P0300_KUWAIT_RIYADH
- TZ_UTC_P0300_MINSK
- TZ_UTC_P0300_MOSCOW_ST_PETERSBURG_VOLGOGRAD
- TZ_UTC_P0300_NAIROBI
- TZ_UTC_P0330_TEHRAN
- TZ_UTC_P0400_ABU_DHABI_MUSCAT
- TZ_UTC_P0400_ASTRAKHAN_ULYANOVSK
- TZ_UTC_P0400_BAKU
- TZ_UTC_P0400_IZHEVSK_SAMARA
- TZ_UTC_P0400_PORT_LOUIS
- TZ_UTC_P0400_SARATOV
- TZ_UTC_P0400_TBILISI
- TZ_UTC_P0400_YEREVAN
- TZ_UTC_P0430_KABUL
- TZ_UTC_P0500_ASHGABAT_TASHKENT
- TZ_UTC_P0500_EKATERINBURG
- TZ_UTC_P0500_ISLAMABAD_KARACHI
- TZ_UTC_P0530_CHENNAI_KOLKATA_MUMBAI_NEW_DELHI
- TZ_UTC_P0530_SRI_JAYAWARDENEPURA
- TZ_UTC_P0545_KATHMANDU
- TZ_UTC_P0600_ASTANA
- TZ_UTC_P0600_DHAKA
- TZ_UTC_P0600_OMSK
- TZ_UTC_P0630_YANGON_RANGOON
- TZ_UTC_P0700_BANGKOK_HANOI_JAKARTA
- TZ_UTC_P0700_BARNAUL_GORNO_ALTAYSK
- TZ_UTC_P0700_HOVD
- TZ_UTC_P0700_KRASNOYARSK
- TZ_UTC_P0700_NOVOSIBIRSK
- TZ_UTC_P0700_TOMSK
- TZ_UTC_P0800_BEIJING_CHONGQING_HONG_KONG_URUMQI
- TZ_UTC_P0800_IRKUTSK
- TZ_UTC_P0800_KUALA_LUMPUR_SINGAPORE
- TZ_UTC_P0800_PERTH
- TZ_UTC_P0800_TAIPEI
- TZ_UTC_P0800_ULAANBAATAR
- TZ_UTC_P0830_PYONGYANG
- TZ_UTC_P0845_EUCLA
- TZ_UTC_P0900_CHITA
- TZ_UTC_P0900_OSAKA_SAPPORO_TOKYO
- TZ_UTC_P0900_SEOUL
- TZ_UTC_P0900_YAKUTSK
- TZ_UTC_P0930_ADELAIDE
- TZ_UTC_P0930_DARWIN
- TZ_UTC_P1000_BRISBANE
- TZ_UTC_P1000_CANBERRA_MELBOURNE_SYDNEY
- TZ_UTC_P1000_GUAM_PORT_MORESBY
- TZ_UTC_P1000_HOBART
- TZ_UTC_P1000_VLADIVOSTOK
- TZ_UTC_P1030_LORD_HOWE_ISLAND
- TZ_UTC_P1100_BOUGAINVILLE_ISLAND
- TZ_UTC_P1100_CHOKURDAKH
- TZ_UTC_P1100_MAGADAN
- TZ_UTC_P1100_NORFOLK_ISLAND
- TZ_UTC_P1100_SAKHALIN
- TZ_UTC_P1100_SOLOMON_IS_NEW_CALEDONIA
- TZ_UTC_P1200_ANADYR_PETROPAVLOVSK_KAMCHATSKY
- TZ_UTC_P1200_AUCKLAND_WELLINGTON
- TZ_UTC_P1200_COORDINATED_UNIVERSAL_TIME_12
- TZ_UTC_P1200_FIJI
- TZ_UTC_P1245_CHATHAM_ISLANDS
- TZ_UTC_P1300_COORDINATED_UNIVERSAL_TIME_13
- TZ_UTC_P1300_NUKU_ALOFA
- TZ_UTC_P1300_SAMOA
- TZ_UTC_P1400_KIRITIMATI_ISLAND

## Copyright information

The tzdb to Windows TimeZone mapping is based on the mapping made by the unicode group ( http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml, the terms of use can be found under http://www.unicode.org/copyright.html), with some adjustment based on the english wikipedia artikel (http://cldr.unicode.org/development/development-process/design-proposals/extended-windows-olson-zid-mapping)