// -*- c++ -*- /* * Jakelib2 - General purpose C++ library * Copyright (C) 2001 Florian Wolff (florian@donuz.de) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id: TimeZone.jlc,v 1.9 2003/09/27 08:10:29 florian Exp $ */ #include "jakelib2.h" #include "jakelib2/util/TimeZone.h" #include "jakelib2/util/SimpleTimeZone.h" #include "jakelib2/util/Hashtable.h" #include "jakelib2/util/Calendar.h" using namespace jakelib::lang; using namespace jakelib::util; JAKELIB_IMPLEMENT_CLASS("jakelib.util.TimeZone", TimeZone, Object); TimeZone* TimeZone::defaultZone = null; Hashtable* TimeZone::timezones = null; #pragma javasyntax /*****************************************************************************\ * initTimeZoneClass | *****************************************************************************/ void TimeZone::initTimeZoneClass() { TimeZone *tz; timezones = new Hashtable(200); // FIXME: Alles umbauen. Wir brauchen eine array mit allen timezone namen; // ausserdem hat jede TimeZone ihren eigenen Namen; // ohne #pragma javasyntax, um platz zu sparen. tz = new SimpleTimeZone(-11000 * 3600, "MIT"); timezones->put("MIT", tz); timezones->put("Pacific/Apia", tz); timezones->put("Pacific/Midway", tz); timezones->put("Pacific/Niue", tz); timezones->put("Pacific/Pago_Pago", tz); tz = new SimpleTimeZone (-10000 * 3600, "America/Adak", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("America/Adak", tz); tz = new SimpleTimeZone(-10000 * 3600, "HST"); timezones->put("HST", tz); timezones->put("Pacific/Fakaofo", tz); timezones->put("Pacific/Honolulu", tz); timezones->put("Pacific/Johnston", tz); timezones->put("Pacific/Rarotonga", tz); timezones->put("Pacific/Tahiti", tz); tz = new SimpleTimeZone(-9500 * 3600, "Pacific/Marquesas"); timezones->put("Pacific/Marquesas", tz); tz = new SimpleTimeZone (-9000 * 3600, "AST", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("AST", tz); timezones->put("America/Anchorage", tz); timezones->put("America/Juneau", tz); timezones->put("America/Nome", tz); timezones->put("America/Yakutat", tz); tz = new SimpleTimeZone(-9000 * 3600, "Pacific/Gambier"); timezones->put("Pacific/Gambier", tz); tz = new SimpleTimeZone (-8000 * 3600, "PST", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("PST", tz); timezones->put("PST8PDT", tz); timezones->put("America/Dawson", tz); timezones->put("America/Los_Angeles", tz); timezones->put("America/Tijuana", tz); timezones->put("America/Vancouver", tz); timezones->put("America/Whitehorse", tz); timezones->put("US/Pacific-New", tz); tz = new SimpleTimeZone(-8000 * 3600, "Pacific/Pitcairn"); timezones->put("Pacific/Pitcairn", tz); tz = new SimpleTimeZone (-7000 * 3600, "MST", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("MST", tz); timezones->put("MST7MDT", tz); timezones->put("America/Boise", tz); timezones->put("America/Chihuahua", tz); timezones->put("America/Denver", tz); timezones->put("America/Edmonton", tz); timezones->put("America/Inuvik", tz); timezones->put("America/Mazatlan", tz); timezones->put("America/Shiprock", tz); timezones->put("America/Yellowknife", tz); tz = new SimpleTimeZone(-7000 * 3600, "MST7"); timezones->put("MST7", tz); timezones->put("PNT", tz); timezones->put("America/Dawson_Creek", tz); timezones->put("America/Hermosillo", tz); timezones->put("America/Phoenix", tz); tz = new SimpleTimeZone (-6000 * 3600, "CST", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("CST", tz); timezones->put("CST6CDT", tz); timezones->put("America/Cambridge_Bay", tz); timezones->put("America/Cancun", tz); timezones->put("America/Chicago", tz); timezones->put("America/Menominee", tz); timezones->put("America/Merida", tz); timezones->put("America/Mexico_City", tz); timezones->put("America/Monterrey", tz); timezones->put("America/Rainy_River", tz); timezones->put("America/Winnipeg", tz); tz = new SimpleTimeZone(-6000 * 3600, "America/Belize"); timezones->put("America/Belize", tz); timezones->put("America/Costa_Rica", tz); timezones->put("America/El_Salvador", tz); timezones->put("America/Guatemala", tz); timezones->put("America/Managua", tz); timezones->put("America/Regina", tz); timezones->put("America/Swift_Current", tz); timezones->put("America/Tegucigalpa", tz); timezones->put("Pacific/Galapagos", tz); tz = new SimpleTimeZone (-6000 * 3600, "Pacific/Easter", Calendar::OCTOBER, 9, -Calendar::SUNDAY, 0 * 3600, Calendar::MARCH, 9, -Calendar::SUNDAY, 0 * 3600); timezones->put("Pacific/Easter", tz); tz = new SimpleTimeZone (-5000 * 3600, "America/Grand_Turk", Calendar::APRIL, 1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("America/Grand_Turk", tz); timezones->put("America/Havana", tz); tz = new SimpleTimeZone(-5000 * 3600, "EST5"); timezones->put("EST5", tz); timezones->put("IET", tz); timezones->put("America/Bogota", tz); timezones->put("America/Cayman", tz); timezones->put("America/Eirunepe", tz); timezones->put("America/Guayaquil", tz); timezones->put("America/Indiana/Indianapolis", tz); timezones->put("America/Indiana/Knox", tz); timezones->put("America/Indiana/Marengo", tz); timezones->put("America/Indiana/Vevay", tz); timezones->put("America/Indianapolis", tz); timezones->put("America/Iqaluit", tz); timezones->put("America/Jamaica", tz); timezones->put("America/Lima", tz); timezones->put("America/Panama", tz); timezones->put("America/Pangnirtung", tz); timezones->put("America/Port-au-Prince", tz); timezones->put("America/Porto_Acre", tz); timezones->put("America/Rankin_Inlet", tz); tz = new SimpleTimeZone (-5000 * 3600, "EST", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("EST", tz); timezones->put("EST5EDT", tz); timezones->put("America/Detroit", tz); timezones->put("America/Kentucky/Louisville", tz); timezones->put("America/Kentucky/Monticello", tz); timezones->put("America/Louisville", tz); timezones->put("America/Montreal", tz); timezones->put("America/Nassau", tz); timezones->put("America/New_York", tz); timezones->put("America/Nipigon", tz); timezones->put("America/Thunder_Bay", tz); tz = new SimpleTimeZone(-4000 * 3600, "PRT"); timezones->put("PRT", tz); timezones->put("America/Anguilla", tz); timezones->put("America/Antigua", tz); timezones->put("America/Aruba", tz); timezones->put("America/Barbados", tz); timezones->put("America/Boa_Vista", tz); timezones->put("America/Caracas", tz); timezones->put("America/Curacao", tz); timezones->put("America/Dominica", tz); timezones->put("America/Grenada", tz); timezones->put("America/Guadeloupe", tz); timezones->put("America/Guyana", tz); timezones->put("America/La_Paz", tz); timezones->put("America/Manaus", tz); timezones->put("America/Martinique", tz); timezones->put("America/Montserrat", tz); timezones->put("America/Port_of_Spain", tz); timezones->put("America/Porto_Velho", tz); timezones->put("America/Puerto_Rico", tz); timezones->put("America/Santo_Domingo", tz); timezones->put("America/St_Kitts", tz); timezones->put("America/St_Lucia", tz); timezones->put("America/St_Thomas", tz); timezones->put("America/St_Vincent", tz); timezones->put("America/Tortola", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Asuncion", Calendar::OCTOBER, 1, Calendar::SUNDAY, 0 * 3600, Calendar::FEBRUARY, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("America/Asuncion", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Cuiaba", Calendar::OCTOBER, 2, Calendar::SUNDAY, 0 * 3600, Calendar::FEBRUARY, 3, Calendar::SUNDAY, 0 * 3600); timezones->put("America/Cuiaba", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Goose_Bay", Calendar::APRIL, 1, Calendar::SUNDAY, 60000, Calendar::OCTOBER, -1, Calendar::SUNDAY, 60000); timezones->put("America/Goose_Bay", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Glace_Bay", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("America/Glace_Bay", tz); timezones->put("America/Halifax", tz); timezones->put("America/Thule", tz); timezones->put("Atlantic/Bermuda", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Santiago", Calendar::OCTOBER, 9, -Calendar::SUNDAY, 0 * 3600, Calendar::MARCH, 9, -Calendar::SUNDAY, 0 * 3600); timezones->put("America/Santiago", tz); timezones->put("Antarctica/Palmer", tz); tz = new SimpleTimeZone (-4000 * 3600, "Atlantic/Stanley", Calendar::SEPTEMBER, 2, Calendar::SUNDAY, 0 * 3600, Calendar::APRIL, 16, -Calendar::SUNDAY, 0 * 3600); timezones->put("Atlantic/Stanley", tz); tz = new SimpleTimeZone (-3500 * 3600, "CNT", Calendar::APRIL, 1, Calendar::SUNDAY, 60000, Calendar::OCTOBER, -1, Calendar::SUNDAY, 60000); timezones->put("CNT", tz); timezones->put("America/St_Johns", tz); tz = new SimpleTimeZone (-3000 * 3600, "America/Araguaina", Calendar::OCTOBER, 2, Calendar::SUNDAY, 0 * 3600, Calendar::FEBRUARY, 3, Calendar::SUNDAY, 0 * 3600); timezones->put("America/Araguaina", tz); timezones->put("America/Sao_Paulo", tz); tz = new SimpleTimeZone(-3000 * 3600, "AGT"); timezones->put("AGT", tz); timezones->put("America/Belem", tz); timezones->put("America/Buenos_Aires", tz); timezones->put("America/Catamarca", tz); timezones->put("America/Cayenne", tz); timezones->put("America/Cordoba", tz); timezones->put("America/Fortaleza", tz); timezones->put("America/Jujuy", tz); timezones->put("America/Maceio", tz); timezones->put("America/Mendoza", tz); timezones->put("America/Montevideo", tz); timezones->put("America/Paramaribo", tz); timezones->put("America/Recife", tz); timezones->put("America/Rosario", tz); tz = new SimpleTimeZone (-3000 * 3600, "America/Godthab", Calendar::MARCH, 30, -Calendar::SATURDAY, 22000 * 3600, Calendar::OCTOBER, 30, -Calendar::SATURDAY, 22000 * 3600); timezones->put("America/Godthab", tz); tz = new SimpleTimeZone (-3000 * 3600, "America/Miquelon", Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("America/Miquelon", tz); tz = new SimpleTimeZone(-2000 * 3600, "America/Noronha"); timezones->put("America/Noronha", tz); timezones->put("Atlantic/South_Georgia", tz); tz = new SimpleTimeZone (-1000 * 3600, "America/Scoresbysund", Calendar::MARCH, -1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("America/Scoresbysund", tz); timezones->put("Atlantic/Azores", tz); tz = new SimpleTimeZone(-1000 * 3600, "Atlantic/Cape_Verde"); timezones->put("Atlantic/Cape_Verde", tz); timezones->put("Atlantic/Jan_Mayen", tz); tz = new SimpleTimeZone(0 * 3600, "GMT"); timezones->put("GMT", tz); timezones->put("UTC", tz); timezones->put("Africa/Abidjan", tz); timezones->put("Africa/Accra", tz); timezones->put("Africa/Bamako", tz); timezones->put("Africa/Banjul", tz); timezones->put("Africa/Bissau", tz); timezones->put("Africa/Casablanca", tz); timezones->put("Africa/Conakry", tz); timezones->put("Africa/Dakar", tz); timezones->put("Africa/El_Aaiun", tz); timezones->put("Africa/Freetown", tz); timezones->put("Africa/Lome", tz); timezones->put("Africa/Monrovia", tz); timezones->put("Africa/Nouakchott", tz); timezones->put("Africa/Ouagadougou", tz); timezones->put("Africa/Sao_Tome", tz); timezones->put("Africa/Timbuktu", tz); timezones->put("Atlantic/Reykjavik", tz); timezones->put("Atlantic/St_Helena", tz); timezones->put("Europe/Belfast", tz); timezones->put("Europe/Dublin", tz); timezones->put("Europe/London", tz); tz = new SimpleTimeZone (0 * 3600, "WET", Calendar::MARCH, -1, Calendar::SUNDAY, 1000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 1000 * 3600); timezones->put("WET", tz); timezones->put("Atlantic/Canary", tz); timezones->put("Atlantic/Faeroe", tz); timezones->put("Atlantic/Madeira", tz); timezones->put("Europe/Lisbon", tz); tz = new SimpleTimeZone(1000 * 3600, "Africa/Algiers"); timezones->put("Africa/Algiers", tz); timezones->put("Africa/Bangui", tz); timezones->put("Africa/Brazzaville", tz); timezones->put("Africa/Douala", tz); timezones->put("Africa/Kinshasa", tz); timezones->put("Africa/Lagos", tz); timezones->put("Africa/Libreville", tz); timezones->put("Africa/Luanda", tz); timezones->put("Africa/Malabo", tz); timezones->put("Africa/Ndjamena", tz); timezones->put("Africa/Niamey", tz); timezones->put("Africa/Porto-Novo", tz); timezones->put("Africa/Tunis", tz); tz = new SimpleTimeZone (1000 * 3600, "Africa/Windhoek", Calendar::SEPTEMBER, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::APRIL, 1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Africa/Windhoek", tz); tz = new SimpleTimeZone (1000 * 3600, "CET", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("CET", tz); timezones->put("ECT", tz); timezones->put("Africa/Ceuta", tz); timezones->put("Arctic/Longyearbyen", tz); timezones->put("Europe/Amsterdam", tz); timezones->put("Europe/Andorra", tz); timezones->put("Europe/Belgrade", tz); timezones->put("Europe/Berlin", tz); timezones->put("Europe/Bratislava", tz); timezones->put("Europe/Brussels", tz); timezones->put("Europe/Budapest", tz); timezones->put("Europe/Copenhagen", tz); timezones->put("Europe/Gibraltar", tz); timezones->put("Europe/Ljubljana", tz); timezones->put("Europe/Luxembourg", tz); timezones->put("Europe/Madrid", tz); timezones->put("Europe/Malta", tz); timezones->put("Europe/Monaco", tz); timezones->put("Europe/Oslo", tz); timezones->put("Europe/Paris", tz); timezones->put("Europe/Prague", tz); timezones->put("Europe/Rome", tz); timezones->put("Europe/San_Marino", tz); timezones->put("Europe/Sarajevo", tz); timezones->put("Europe/Skopje", tz); timezones->put("Europe/Stockholm", tz); timezones->put("Europe/Tirane", tz); timezones->put("Europe/Vaduz", tz); timezones->put("Europe/Vatican", tz); timezones->put("Europe/Vienna", tz); timezones->put("Europe/Warsaw", tz); timezones->put("Europe/Zagreb", tz); timezones->put("Europe/Zurich", tz); tz = new SimpleTimeZone (2000 * 3600, "ART", Calendar::APRIL, -1, Calendar::FRIDAY, 0 * 3600, Calendar::SEPTEMBER, -1, Calendar::THURSDAY, 23000 * 3600); timezones->put("ART", tz); timezones->put("Africa/Cairo", tz); tz = new SimpleTimeZone(2000 * 3600, "CAT"); timezones->put("CAT", tz); timezones->put("Africa/Blantyre", tz); timezones->put("Africa/Bujumbura", tz); timezones->put("Africa/Gaborone", tz); timezones->put("Africa/Harare", tz); timezones->put("Africa/Johannesburg", tz); timezones->put("Africa/Kigali", tz); timezones->put("Africa/Lubumbashi", tz); timezones->put("Africa/Lusaka", tz); timezones->put("Africa/Maputo", tz); timezones->put("Africa/Maseru", tz); timezones->put("Africa/Mbabane", tz); timezones->put("Africa/Tripoli", tz); timezones->put("Europe/Riga", tz); timezones->put("Europe/Tallinn", tz); timezones->put("Europe/Vilnius", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Amman", Calendar::MARCH, -1, Calendar::THURSDAY, 0 * 3600, Calendar::SEPTEMBER, -1, Calendar::THURSDAY, 0 * 3600); timezones->put("Asia/Amman", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Beirut", Calendar::MARCH, -1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("Asia/Beirut", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Damascus", Calendar::APRIL, 1, 0, 0 * 3600, Calendar::OCTOBER, 1, 0, 0 * 3600); timezones->put("Asia/Damascus", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Gaza", Calendar::APRIL, 3, Calendar::FRIDAY, 0 * 3600, Calendar::OCTOBER, 3, Calendar::FRIDAY, 0 * 3600); timezones->put("Asia/Gaza", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Jerusalem", Calendar::APRIL, 1, 0, 1000 * 3600, Calendar::OCTOBER, 1, 0, 1000 * 3600); timezones->put("Asia/Jerusalem", tz); tz = new SimpleTimeZone (2000 * 3600, "EET", Calendar::MARCH, -1, Calendar::SUNDAY, 3000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 3000 * 3600); timezones->put("EET", tz); timezones->put("Asia/Istanbul", tz); timezones->put("Asia/Nicosia", tz); timezones->put("Europe/Athens", tz); timezones->put("Europe/Bucharest", tz); timezones->put("Europe/Chisinau", tz); timezones->put("Europe/Helsinki", tz); timezones->put("Europe/Istanbul", tz); timezones->put("Europe/Kiev", tz); timezones->put("Europe/Nicosia", tz); timezones->put("Europe/Simferopol", tz); timezones->put("Europe/Sofia", tz); timezones->put("Europe/Uzhgorod", tz); timezones->put("Europe/Zaporozhye", tz); tz = new SimpleTimeZone (2000 * 3600, "Europe/Kaliningrad", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Europe/Kaliningrad", tz); timezones->put("Europe/Minsk", tz); tz = new SimpleTimeZone (3000 * 3600, "Asia/Baghdad", Calendar::APRIL, 1, 0, 3000 * 3600, Calendar::OCTOBER, 1, 0, 3000 * 3600); timezones->put("Asia/Baghdad", tz); tz = new SimpleTimeZone (3000 * 3600, "Europe/Moscow", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Europe/Moscow", tz); timezones->put("Europe/Tiraspol", tz); tz = new SimpleTimeZone(3000 * 3600, "EAT"); timezones->put("EAT", tz); timezones->put("Africa/Addis_Ababa", tz); timezones->put("Africa/Asmera", tz); timezones->put("Africa/Dar_es_Salaam", tz); timezones->put("Africa/Djibouti", tz); timezones->put("Africa/Kampala", tz); timezones->put("Africa/Khartoum", tz); timezones->put("Africa/Mogadishu", tz); timezones->put("Africa/Nairobi", tz); timezones->put("Antarctica/Syowa", tz); timezones->put("Asia/Aden", tz); timezones->put("Asia/Bahrain", tz); timezones->put("Asia/Kuwait", tz); timezones->put("Asia/Qatar", tz); timezones->put("Asia/Riyadh", tz); timezones->put("Indian/Antananarivo", tz); timezones->put("Indian/Comoro", tz); timezones->put("Indian/Mayotte", tz); tz = new SimpleTimeZone(3500 * 3600, "Asia/Tehran"); timezones->put("MET", tz); timezones->put("Asia/Tehran", tz); tz = new SimpleTimeZone (4000 * 3600, "Asia/Baku", Calendar::MARCH, -1, Calendar::SUNDAY, 1000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 1000 * 3600); timezones->put("Asia/Baku", tz); tz = new SimpleTimeZone (4000 * 3600, "Asia/Aqtau", Calendar::MARCH, -1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("Asia/Aqtau", tz); timezones->put("Asia/Tbilisi", tz); tz = new SimpleTimeZone (4000 * 3600, "Asia/Yerevan", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Yerevan", tz); timezones->put("Europe/Samara", tz); tz = new SimpleTimeZone(4000 * 3600, "NET"); timezones->put("NET", tz); timezones->put("Asia/Dubai", tz); timezones->put("Asia/Muscat", tz); timezones->put("Indian/Mahe", tz); timezones->put("Indian/Mauritius", tz); timezones->put("Indian/Reunion", tz); tz = new SimpleTimeZone(4500 * 3600, "Asia/Kabul"); timezones->put("Asia/Kabul", tz); tz = new SimpleTimeZone (5000 * 3600, "Asia/Aqtobe", Calendar::MARCH, -1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("Asia/Aqtobe", tz); tz = new SimpleTimeZone (5000 * 3600, "Asia/Bishkek", Calendar::MARCH, -1, Calendar::SUNDAY, 2500 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2500 * 3600); timezones->put("Asia/Bishkek", tz); tz = new SimpleTimeZone (5000 * 3600, "Asia/Yekaterinburg", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Yekaterinburg", tz); tz = new SimpleTimeZone(5000 * 3600, "PLT"); timezones->put("PLT", tz); timezones->put("Asia/Ashgabat", tz); timezones->put("Asia/Dushanbe", tz); timezones->put("Asia/Karachi", tz); timezones->put("Asia/Samarkand", tz); timezones->put("Asia/Tashkent", tz); timezones->put("Indian/Chagos", tz); timezones->put("Indian/Kerguelen", tz); timezones->put("Indian/Maldives", tz); tz = new SimpleTimeZone(5500 * 3600, "IST"); timezones->put("IST", tz); timezones->put("Asia/Calcutta", tz); tz = new SimpleTimeZone(5750 * 3600, "Asia/Katmandu"); timezones->put("Asia/Katmandu", tz); tz = new SimpleTimeZone(6000 * 3600, "BST"); timezones->put("BST", tz); timezones->put("Antarctica/Mawson", tz); timezones->put("Asia/Colombo", tz); timezones->put("Asia/Dhaka", tz); timezones->put("Asia/Thimphu", tz); tz = new SimpleTimeZone (6000 * 3600, "Asia/Almaty", Calendar::MARCH, -1, Calendar::SUNDAY, 0 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 0 * 3600); timezones->put("Asia/Almaty", tz); tz = new SimpleTimeZone (6000 * 3600, "Asia/Novosibirsk", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Novosibirsk", tz); timezones->put("Asia/Omsk", tz); tz = new SimpleTimeZone(6500 * 3600, "Asia/Rangoon"); timezones->put("Asia/Rangoon", tz); timezones->put("Indian/Cocos", tz); tz = new SimpleTimeZone(7000 * 3600, "VST"); timezones->put("VST", tz); timezones->put("Antarctica/Davis", tz); timezones->put("Asia/Bangkok", tz); timezones->put("Asia/Hovd", tz); timezones->put("Asia/Jakarta", tz); timezones->put("Asia/Phnom_Penh", tz); timezones->put("Asia/Saigon", tz); timezones->put("Asia/Vientiane", tz); timezones->put("Indian/Christmas", tz); tz = new SimpleTimeZone (7000 * 3600, "Asia/Krasnoyarsk", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Krasnoyarsk", tz); tz = new SimpleTimeZone(8000 * 3600, "CTT"); timezones->put("CTT", tz); timezones->put("Antarctica/Casey", tz); timezones->put("Asia/Brunei", tz); timezones->put("Asia/Chungking", tz); timezones->put("Asia/Harbin", tz); timezones->put("Asia/Hong_Kong", tz); timezones->put("Asia/Kashgar", tz); timezones->put("Asia/Kuala_Lumpur", tz); timezones->put("Asia/Kuching", tz); timezones->put("Asia/Macao", tz); timezones->put("Asia/Manila", tz); timezones->put("Asia/Shanghai", tz); timezones->put("Asia/Singapore", tz); timezones->put("Asia/Taipei", tz); timezones->put("Asia/Ujung_Pandang", tz); timezones->put("Asia/Ulaanbaatar", tz); timezones->put("Asia/Urumqi", tz); timezones->put("Australia/Perth", tz); tz = new SimpleTimeZone (8000 * 3600, "Asia/Irkutsk", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Irkutsk", tz); tz = new SimpleTimeZone(9000 * 3600, "JST"); timezones->put("JST", tz); timezones->put("Asia/Dili", tz); timezones->put("Asia/Jayapura", tz); timezones->put("Asia/Pyongyang", tz); timezones->put("Asia/Seoul", tz); timezones->put("Asia/Tokyo", tz); timezones->put("Pacific/Palau", tz); tz = new SimpleTimeZone (9000 * 3600, "Asia/Yakutsk", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Yakutsk", tz); tz = new SimpleTimeZone (9500 * 3600, "Australia/Adelaide", Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Australia/Adelaide", tz); timezones->put("Australia/Broken_Hill", tz); tz = new SimpleTimeZone(9500 * 3600, "ACT"); timezones->put("ACT", tz); timezones->put("Australia/Darwin", tz); tz = new SimpleTimeZone(10000 * 3600, "Antarctica/DumontDUrville"); timezones->put("Antarctica/DumontDUrville", tz); timezones->put("Australia/Brisbane", tz); timezones->put("Australia/Lindeman", tz); timezones->put("Pacific/Guam", tz); timezones->put("Pacific/Port_Moresby", tz); timezones->put("Pacific/Saipan", tz); timezones->put("Pacific/Truk", tz); timezones->put("Pacific/Yap", tz); tz = new SimpleTimeZone (10000 * 3600, "Asia/Vladivostok", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Vladivostok", tz); tz = new SimpleTimeZone (10000 * 3600, "Australia/Hobart", Calendar::OCTOBER, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Australia/Hobart", tz); tz = new SimpleTimeZone (10000 * 3600, "AET", Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("AET", tz); timezones->put("Australia/Melbourne", tz); timezones->put("Australia/Sydney", tz); tz = new SimpleTimeZone (10500 * 3600, "Australia/Lord_Howe", Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, 500 * 3600); timezones->put("Australia/Lord_Howe", tz); tz = new SimpleTimeZone (11000 * 3600, "Asia/Magadan", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Magadan", tz); tz = new SimpleTimeZone(11000 * 3600, "SST"); timezones->put("SST", tz); timezones->put("Pacific/Efate", tz); timezones->put("Pacific/Guadalcanal", tz); timezones->put("Pacific/Kosrae", tz); timezones->put("Pacific/Noumea", tz); timezones->put("Pacific/Ponape", tz); tz = new SimpleTimeZone(11500 * 3600, "Pacific/Norfolk"); timezones->put("Pacific/Norfolk", tz); tz = new SimpleTimeZone (12000 * 3600, "NST", Calendar::OCTOBER, 1, Calendar::SUNDAY, 2000 * 3600, Calendar::MARCH, 3, Calendar::SUNDAY, 2000 * 3600); timezones->put("NST", tz); timezones->put("Antarctica/McMurdo", tz); timezones->put("Antarctica/South_Pole", tz); timezones->put("Pacific/Auckland", tz); tz = new SimpleTimeZone (12000 * 3600, "Asia/Anadyr", Calendar::MARCH, -1, Calendar::SUNDAY, 2000 * 3600, Calendar::OCTOBER, -1, Calendar::SUNDAY, 2000 * 3600); timezones->put("Asia/Anadyr", tz); timezones->put("Asia/Kamchatka", tz); tz = new SimpleTimeZone(12000 * 3600, "Pacific/Fiji"); timezones->put("Pacific/Fiji", tz); timezones->put("Pacific/Funafuti", tz); timezones->put("Pacific/Kwajalein", tz); timezones->put("Pacific/Majuro", tz); timezones->put("Pacific/Nauru", tz); timezones->put("Pacific/Tarawa", tz); timezones->put("Pacific/Wake", tz); timezones->put("Pacific/Wallis", tz); tz = new SimpleTimeZone (12750 * 3600, "Pacific/Chatham", Calendar::OCTOBER, 1, Calendar::SUNDAY, 2750 * 3600, Calendar::MARCH, 3, Calendar::SUNDAY, 2750 * 3600); timezones->put("Pacific/Chatham", tz); tz = new SimpleTimeZone(13000 * 3600, "Pacific/Enderbury"); timezones->put("Pacific/Enderbury", tz); timezones->put("Pacific/Tongatapu", tz); tz = new SimpleTimeZone(14000 * 3600, "Pacific/Kiritimati"); timezones->put("Pacific/Kiritimati", tz); defaultZone = (TimeZone*) timezones->get("GMT"); } /*****************************************************************************\ * getDefault | *****************************************************************************/ TimeZone* TimeZone::getDefault() { return defaultZone; } /*****************************************************************************\ * setDefault | *****************************************************************************/ void TimeZone::setDefault(TimeZone* zone) { defaultZone = zone; } /*****************************************************************************\ * getTimeZone | *****************************************************************************/ TimeZone* TimeZone::getTimeZone(jakelib::lang::String *id) { TimeZone *tz = (TimeZone*) timezones->get(id); if (tz != null) return tz; else return (TimeZone*) timezones->get("GMT"); } /*****************************************************************************\ * setID | *****************************************************************************/ void TimeZone::setID(jakelib::lang::String *id) { this->id = id; } /*****************************************************************************\ * getID | *****************************************************************************/ String* TimeZone::getID() { return id; } /*****************************************************************************\ * getDisplayName | *****************************************************************************/ String* TimeZone::getDisplayName() { return null;//FIXME: this is only to temporarily satisfy MSVC } String* TimeZone::getDisplayName(Locale *locale) { return null;//FIXME: this is only to temporarily satisfy MSVC } String* TimeZone::getDisplayName(jboolean daylight, TIMEZONE_STYLE style) { return null;//FIXME: this is only to temporarily satisfy MSVC } String* TimeZone::getDisplayName(jboolean daylight, TIMEZONE_STYLE style, Locale *locale) { return null;//FIXME: this is only to temporarily satisfy MSVC } /*****************************************************************************\ * hasSameRules | *****************************************************************************/ jboolean TimeZone::hasSameRules(TimeZone *other) { return other->getRawOffset() == getRawOffset(); } /*****************************************************************************\ * clone | *****************************************************************************/ Object* TimeZone::clone() { return null;//FIXME: this is only to temporarily satisfy MSVC } /*****************************************************************************\ * getAvailableIDs | *****************************************************************************/ Strings* TimeZone::getAvailableIDs() { return null;//FIXME: this is only to temporarily satisfy MSVC } Strings* TimeZone::getAvailableIDs(int rawOffset) { return null;//FIXME: this is only to temporarily satisfy MSVC }