1. /*
  2. * @(#)TimeZone.java 1.43 01/11/29
  3. *
  4. * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. /*
  8. * @(#)TimeZone.java 1.40 01/01/11
  9. *
  10. * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
  11. * (C) Copyright IBM Corp. 1996 - All Rights Reserved
  12. *
  13. * Portions copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
  14. *
  15. * The original version of this source code and documentation is copyrighted
  16. * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
  17. * materials are provided under terms of a License Agreement between Taligent
  18. * and Sun. This technology is protected by multiple US and International
  19. * patents. This notice and attribution to Taligent may not be removed.
  20. * Taligent is a registered trademark of Taligent, Inc.
  21. *
  22. * Permission to use, copy, modify, and distribute this software
  23. * and its documentation for NON-COMMERCIAL purposes and without
  24. * fee is hereby granted provided that this copyright notice
  25. * appears in all copies. Please refer to the file "copyright.html"
  26. * for further important copyright and licensing information.
  27. *
  28. * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  29. * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  30. * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  31. * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  32. * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  33. * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  34. *
  35. */
  36. package java.util;
  37. import java.io.Serializable;
  38. import java.lang.ref.SoftReference;
  39. import java.security.AccessController;
  40. import java.security.PrivilegedAction;
  41. import java.text.SimpleDateFormat;
  42. import java.text.NumberFormat;
  43. import java.text.ParsePosition;
  44. import sun.security.action.GetPropertyAction;
  45. /**
  46. * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
  47. * savings.
  48. *
  49. * <p>
  50. * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
  51. * which creates a <code>TimeZone</code> based on the time zone where the program
  52. * is running. For example, for a program running in Japan, <code>getDefault</code>
  53. * creates a <code>TimeZone</code> object based on Japanese Standard Time.
  54. *
  55. * <p>
  56. * You can also get a <code>TimeZone</code> using <code>getTimeZone</code> along
  57. * with a time zone ID. For instance, the time zone ID for the Pacific
  58. * Standard Time zone is "PST". So, you can get a PST <code>TimeZone</code> object
  59. * with:
  60. * <blockquote>
  61. * <pre>
  62. * TimeZone tz = TimeZone.getTimeZone("PST");
  63. * </pre>
  64. * </blockquote>
  65. * You can use <code>getAvailableIDs</code> method to iterate through
  66. * all the supported time zone IDs. You can then choose a
  67. * supported ID to get a <code>TimeZone</code>.
  68. * If the time zone you want is not represented by one of the
  69. * supported IDs, then you can create a custom time zone ID with
  70. * the following syntax:
  71. *
  72. * <blockquote>
  73. * <pre>
  74. * GMT[+|-]hh[[:]mm]
  75. * </pre>
  76. * </blockquote>
  77. *
  78. * For example, you might specify GMT+14:00 as a custom
  79. * time zone ID. The <code>TimeZone</code> that is returned
  80. * when you specify a custom time zone ID does not include
  81. * daylight savings time.
  82. *
  83. *
  84. * @see Calendar
  85. * @see GregorianCalendar
  86. * @see SimpleTimeZone
  87. * @version 1.40 01/11/01
  88. * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
  89. */
  90. abstract public class TimeZone implements Serializable, Cloneable {
  91. /**
  92. * Sole constructor. (For invocation by subclass constructors, typically
  93. * implicit.)
  94. */
  95. public TimeZone() {
  96. }
  97. /**
  98. * A style specifier for <code>getDisplayName()</code> indicating
  99. * a short name, such as "PST."
  100. * @see #LONG
  101. */
  102. public static final int SHORT = 0;
  103. /**
  104. * A style specifier for <code>getDisplayName()</code> indicating
  105. * a long name, such as "Pacific Standard Time."
  106. * @see #SHORT
  107. */
  108. public static final int LONG = 1;
  109. // Constants used internally; unit is milliseconds
  110. private static final int ONE_MINUTE = 60*1000;
  111. private static final int ONE_HOUR = 60*ONE_MINUTE;
  112. private static final int ONE_DAY = 24*ONE_HOUR;
  113. /**
  114. * Cache to hold the SimpleDateFormat objects for a Locale.
  115. */
  116. private static Hashtable cachedLocaleData = new Hashtable(3);
  117. // Proclaim serialization compatibility with JDK 1.1
  118. static final long serialVersionUID = 3581463369166924961L;
  119. /**
  120. * Gets the time zone offset, for current date, modified in case of
  121. * daylight savings. This is the offset to add *to* UTC to get local time.
  122. * @param era the era of the given date.
  123. * @param year the year in the given date.
  124. * @param month the month in the given date.
  125. * Month is 0-based. e.g., 0 for January.
  126. * @param day the day-in-month of the given date.
  127. * @param dayOfWeek the day-of-week of the given date.
  128. * @param milliseconds the millis in day in <em>standard</em> local time.
  129. * @return the offset to add *to* GMT to get local time.
  130. */
  131. abstract public int getOffset(int era, int year, int month, int day,
  132. int dayOfWeek, int milliseconds);
  133. /**
  134. * Gets the time zone offset, for current date, modified in case of
  135. * daylight savings. This is the offset to add *to* UTC to get local time.
  136. * @param era the era of the given date.
  137. * @param year the year in the given date.
  138. * @param month the month in the given date.
  139. * Month is 0-based. e.g., 0 for January.
  140. * @param day the day-in-month of the given date.
  141. * @param dayOfWeek the day-of-week of the given date.
  142. * @param milliseconds the millis in day in <em>standard</em> local time.
  143. * @param monthLength the length of the given month in days.
  144. * @return the offset to add *to* GMT to get local time.
  145. */
  146. int getOffset(int era, int year, int month, int day,
  147. int dayOfWeek, int milliseconds, int monthLength) {
  148. // Default implementation which ignores the monthLength.
  149. // SimpleTimeZone overrides this and actually uses monthLength.
  150. return getOffset(era, year, month, day, dayOfWeek, milliseconds);
  151. }
  152. /**
  153. * Sets the base time zone offset to GMT.
  154. * This is the offset to add *to* UTC to get local time.
  155. * @param offsetMillis the given base time zone offset to GMT.
  156. */
  157. abstract public void setRawOffset(int offsetMillis);
  158. /**
  159. * Gets unmodified offset, NOT modified in case of daylight savings.
  160. * This is the offset to add *to* UTC to get local time.
  161. * @return the unmodified offset to add *to* UTC to get local time.
  162. */
  163. abstract public int getRawOffset();
  164. /**
  165. * Gets the ID of this time zone.
  166. * @return the ID of this time zone.
  167. */
  168. public String getID()
  169. {
  170. return ID;
  171. }
  172. /**
  173. * Sets the time zone ID. This does not change any other data in
  174. * the time zone object.
  175. * @param ID the new time zone ID.
  176. */
  177. public void setID(String ID)
  178. {
  179. this.ID = ID;
  180. }
  181. /**
  182. * Returns a name of this time zone suitable for presentation to the user
  183. * in the default locale.
  184. * This method returns the long name, not including daylight savings.
  185. * If the display name is not available for the locale,
  186. * then this method returns a string in the format
  187. * <code>GMT[+-]hh:mm</code>.
  188. * @return the human-readable name of this time zone in the default locale.
  189. */
  190. public final String getDisplayName() {
  191. return getDisplayName(false, LONG, Locale.getDefault());
  192. }
  193. /**
  194. * Returns a name of this time zone suitable for presentation to the user
  195. * in the specified locale.
  196. * This method returns the long name, not including daylight savings.
  197. * If the display name is not available for the locale,
  198. * then this method returns a string in the format
  199. * <code>GMT[+-]hh:mm</code>.
  200. * @param locale the locale in which to supply the display name.
  201. * @return the human-readable name of this time zone in the given locale
  202. * or in the default locale if the given locale is not recognized.
  203. */
  204. public final String getDisplayName(Locale locale) {
  205. return getDisplayName(false, LONG, locale);
  206. }
  207. /**
  208. * Returns a name of this time zone suitable for presentation to the user
  209. * in the default locale.
  210. * If the display name is not available for the locale,
  211. * then this method returns a string in the format
  212. * <code>GMT[+-]hh:mm</code>.
  213. * @param daylight if true, return the daylight savings name.
  214. * @param style either <code>LONG</code> or <code>SHORT</code>
  215. * @return the human-readable name of this time zone in the default locale.
  216. */
  217. public final String getDisplayName(boolean daylight, int style) {
  218. return getDisplayName(daylight, style, Locale.getDefault());
  219. }
  220. /**
  221. * Returns a name of this time zone suitable for presentation to the user
  222. * in the specified locale.
  223. * If the display name is not available for the locale,
  224. * then this method returns a string in the format
  225. * <code>GMT[+-]hh:mm</code>.
  226. * @param daylight if true, return the daylight savings name.
  227. * @param style either <code>LONG</code> or <code>SHORT</code>
  228. * @param locale the locale in which to supply the display name.
  229. * @return the human-readable name of this time zone in the given locale
  230. * or in the default locale if the given locale is not recognized.
  231. * @exception IllegalArgumentException style is invalid.
  232. */
  233. public String getDisplayName(boolean daylight, int style, Locale locale) {
  234. /* NOTES:
  235. * (1) We use SimpleDateFormat for simplicity; we could do this
  236. * more efficiently but it would duplicate the SimpleDateFormat code
  237. * here, which is undesirable.
  238. * (2) Attempts to move the code from SimpleDateFormat to here also run
  239. * aground because this requires SimpleDateFormat to keep a Locale
  240. * object around, which it currently doesn't; to synthesize such a
  241. * locale upon resurrection; and to somehow handle the special case of
  242. * construction from a DateFormatSymbols object.
  243. */
  244. if (style != SHORT && style != LONG) {
  245. throw new IllegalArgumentException("Illegal style: " + style);
  246. }
  247. // We keep a cache, indexed by locale. The cache contains a
  248. // SimpleDateFormat object, which we create on demand.
  249. SoftReference data = (SoftReference)cachedLocaleData.get(locale);
  250. SimpleDateFormat format;
  251. if (data == null ||
  252. (format = (SimpleDateFormat)data.get()) == null) {
  253. format = new SimpleDateFormat(null, locale);
  254. cachedLocaleData.put(locale, new SoftReference(format));
  255. }
  256. // Create a new SimpleTimeZone as a stand-in for this zone; the
  257. // stand-in will have no DST, or all DST, but the same ID and offset,
  258. // and hence the same display name.
  259. // We don't cache these because they're small and cheap to create.
  260. SimpleTimeZone tz = daylight ?
  261. new SimpleTimeZone(getRawOffset(), getID(),
  262. Calendar.JANUARY, 1, 0, 0,
  263. Calendar.DECEMBER, 31, 0, ONE_DAY) :
  264. new SimpleTimeZone(getRawOffset(), getID());
  265. format.applyPattern(style == LONG ? "zzzz" : "z");
  266. format.getCalendar().setTimeZone(tz);
  267. return format.format(new Date()); // Doesn't matter what date we use
  268. }
  269. /**
  270. * Queries if this time zone uses daylight savings time.
  271. * @return true if this time zone uses daylight savings time,
  272. * false, otherwise.
  273. */
  274. abstract public boolean useDaylightTime();
  275. /**
  276. * Queries if the given date is in daylight savings time in
  277. * this time zone.
  278. * @param date the given Date.
  279. * @return true if the given date is in daylight savings time,
  280. * false, otherwise.
  281. */
  282. abstract public boolean inDaylightTime(Date date);
  283. /**
  284. * Gets the <code>TimeZone</code> for the given ID.
  285. * @param ID the ID for a <code>TimeZone</code>, either an abbreviation such as
  286. * "PST", a full name such as "America/Los_Angeles", or a custom ID
  287. * such as "GMT-8:00".
  288. * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
  289. * cannot be understood.
  290. */
  291. public static synchronized TimeZone getTimeZone(String ID) {
  292. /* We first try to lookup the zone ID in our hashtable. If this fails,
  293. * we try to parse it as a custom string GMT[+-]hh:mm. This allows us
  294. * to recognize zones in user.timezone that otherwise cannot be
  295. * identified. We do the recognition here, rather than in getDefault(),
  296. * so that the default zone is always the result of calling
  297. * getTimeZone() with the property user.timezone.
  298. *
  299. * If all else fails, we return GMT, which is probably not what the user
  300. * wants, but at least is a functioning TimeZone object. */
  301. TimeZone zone = TimeZoneData.get(ID);
  302. if (zone == null) zone = parseCustomTimeZone(ID);
  303. if (zone == null) zone = (TimeZone)GMT.clone();
  304. return zone;
  305. }
  306. /**
  307. * Gets the available IDs according to the given time zone offset.
  308. * @param rawOffset the given time zone GMT offset.
  309. * @return an array of IDs, where the time zone for that ID has
  310. * the specified GMT offset. For example, "America/Phoenix" and "America/Denver"
  311. * both have GMT-07:00, but differ in daylight savings behavior.
  312. */
  313. // Updated to fix bug 4250355
  314. public static synchronized String[] getAvailableIDs(int rawOffset) {
  315. String[] result;
  316. Vector matched = new Vector();
  317. /* The array TimeZoneData.zones is no longer sorted by raw offset.
  318. * Now scanning through all zone data to match offset.
  319. */
  320. for (int i = 0; i < TimeZoneData.zones.length; ++i) {
  321. if (TimeZoneData.zones[i].getRawOffset() == rawOffset)
  322. matched.add(TimeZoneData.zones[i].getID());
  323. }
  324. result = new String[matched.size()];
  325. matched.toArray(result);
  326. return result;
  327. }
  328. /**
  329. * Gets all the available IDs supported.
  330. * @return an array of IDs.
  331. */
  332. public static synchronized String[] getAvailableIDs() {
  333. String[] resultArray = new String[TimeZoneData.zones.length];
  334. int count = 0;
  335. for (int i = 0; i < TimeZoneData.zones.length; ++i)
  336. resultArray[count++] = TimeZoneData.zones[i].getID();
  337. // copy into array of the right size and return
  338. String[] finalResult = new String[count];
  339. System.arraycopy(resultArray, 0, finalResult, 0, count);
  340. return finalResult;
  341. }
  342. /**
  343. * Gets the platform defined TimeZone ID.
  344. **/
  345. private static native String getSystemTimeZoneID(String javaHome,
  346. String region);
  347. /**
  348. * Gets the default <code>TimeZone</code> for this host.
  349. * The source of the default <code>TimeZone</code>
  350. * may vary with implementation.
  351. * @return a default <code>TimeZone</code>.
  352. */
  353. public static synchronized TimeZone getDefault() {
  354. if (defaultZone == null) {
  355. // get the time zone ID from the system properties
  356. String zoneID = (String) AccessController.doPrivileged(
  357. new GetPropertyAction("user.timezone"));
  358. // if the time zone ID is not set (yet), perform the
  359. // platform to Java time zone ID mapping.
  360. if (zoneID == null || zoneID.equals("")) {
  361. String region = (String) AccessController.doPrivileged(
  362. new GetPropertyAction("user.region"));
  363. String javaHome = (String) AccessController.doPrivileged(
  364. new GetPropertyAction("java.home"));
  365. zoneID = getSystemTimeZoneID(javaHome, region);
  366. if (zoneID == null) {
  367. zoneID = GMT_ID;
  368. }
  369. final String id = zoneID;
  370. AccessController.doPrivileged(new PrivilegedAction() {
  371. public Object run() {
  372. System.setProperty("user.timezone", id);
  373. return null;
  374. }
  375. });
  376. }
  377. defaultZone = getTimeZone(zoneID);
  378. }
  379. return (TimeZone)defaultZone.clone();
  380. }
  381. /**
  382. * Sets the <code>TimeZone</code> that is
  383. * returned by the <code>getDefault</code> method.
  384. * @param zone the new default time zone
  385. */
  386. public static synchronized void setDefault(TimeZone zone)
  387. {
  388. defaultZone = zone;
  389. }
  390. /**
  391. * Returns true if this zone has the same rule and offset as another zone.
  392. * That is, if this zone differs only in ID, if at all.
  393. * @param other the <code>TimeZone</code> object to be compared with
  394. * @return true if the given zone is the same as this one,
  395. * with the possible exception of the ID
  396. */
  397. public boolean hasSameRules(TimeZone other) {
  398. return getRawOffset() == other.getRawOffset() &&
  399. useDaylightTime() == other.useDaylightTime();
  400. }
  401. /**
  402. * Overrides Cloneable
  403. */
  404. public Object clone()
  405. {
  406. try {
  407. TimeZone other = (TimeZone) super.clone();
  408. other.ID = ID;
  409. return other;
  410. } catch (CloneNotSupportedException e) {
  411. throw new InternalError();
  412. }
  413. }
  414. // =======================privates===============================
  415. /**
  416. * The string identifier of this <code>TimeZone</code>. This is a
  417. * programmatic identifier used internally to look up <code>TimeZone</code>
  418. * objects from the system table and also to map them to their localized
  419. * display names. <code>ID</code> values are unique in the system
  420. * table but may not be for dynamically created zones.
  421. * @serial
  422. */
  423. private String ID;
  424. private static TimeZone defaultZone = null;
  425. static final String GMT_ID = "GMT";
  426. private static final int GMT_ID_LENGTH = 3;
  427. private static final String CUSTOM_ID = "Custom";
  428. private static NumberFormat numberFormat = null;
  429. private static final TimeZone GMT = new SimpleTimeZone(0, GMT_ID);
  430. /**
  431. * Parse a custom time zone identifier and return a corresponding zone.
  432. * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
  433. * GMT[+-]hh.
  434. * @return a newly created SimpleTimeZone with the given offset and
  435. * no daylight savings time, or null if the id cannot be parsed.
  436. */
  437. private static final SimpleTimeZone parseCustomTimeZone(String id) {
  438. if (id.length() > GMT_ID_LENGTH &&
  439. id.regionMatches(true, 0, GMT_ID, 0, GMT_ID_LENGTH)) {
  440. ParsePosition pos = new ParsePosition(GMT_ID_LENGTH);
  441. boolean negative = false;
  442. int offset;
  443. if (id.charAt(pos.getIndex()) == '-')
  444. negative = true;
  445. else if (id.charAt(pos.getIndex()) != '+')
  446. return null;
  447. pos.setIndex(pos.getIndex() + 1);
  448. // Create NumberFormat if necessary
  449. synchronized (TimeZoneData.class) {
  450. if (numberFormat == null) {
  451. numberFormat = NumberFormat.getInstance();
  452. numberFormat.setParseIntegerOnly(true);
  453. }
  454. }
  455. synchronized (numberFormat) {
  456. // Look for either hh:mm, hhmm, or hh
  457. int start = pos.getIndex();
  458. Number n = numberFormat.parse(id, pos);
  459. if (n == null) return null;
  460. offset = n.intValue();
  461. if (pos.getIndex() < id.length() &&
  462. id.charAt(pos.getIndex()) == ':') {
  463. // hh:mm
  464. offset *= 60;
  465. pos.setIndex(pos.getIndex() + 1);
  466. n = numberFormat.parse(id, pos);
  467. if (n == null) return null;
  468. offset += n.intValue();
  469. }
  470. else {
  471. // hhmm or hh
  472. // Be strict about interpreting something as hh; it must be
  473. // an offset < 30, and it must be one or two digits. Thus
  474. // 0010 is interpreted as 00:10, but 10 is interpreted as
  475. // 10:00.
  476. if (offset < 30 && (pos.getIndex() - start) <= 2)
  477. offset *= 60; // hh, from 00 to 29; 30 is 00:30
  478. else
  479. offset = offset % 100 + offset / 100 * 60; // hhmm
  480. }
  481. if (negative) offset = -offset;
  482. return new SimpleTimeZone(offset * 60000, CUSTOM_ID);
  483. }
  484. }
  485. return null;
  486. }
  487. // Internal Implementation Notes [LIU]
  488. //
  489. // TimeZone data is stored in two parts. The first is an encoding of the
  490. // rules for each TimeZone. A TimeZone rule includes the offset of a zone
  491. // in milliseconds from GMT, the starting month and day for daylight savings
  492. // time, if there is any, and the ending month and day for daylight savings
  493. // time. The starting and ending days are specified in terms of the n-th
  494. // day of the week, for instance, the first Sunday or the last ("-1"-th)
  495. // Sunday of the month. The rules are stored as statically-constructed
  496. // SimpleTimeZone objects in the TimeZone class.
  497. //
  498. // Each rule has a unique internal identifier string which is used to
  499. // specify it. This identifier string is arbitrary, and is not to be shown
  500. // to the user -- it is for programmatic use only. In order to instantiate
  501. // a TimeZone object, you pass its identifier string to
  502. // TimeZone.getTimeZone(). (This identifier is also used to index the
  503. // localized string data.)
  504. //
  505. // The second part of the data consists of localized string names used by
  506. // DateFormat to describe various TimeZones. A TimeZone may have up to four
  507. // names: The abbreviated and long name for standard time in that zone, and
  508. // the abbreviated and long name for daylight savings time in that zone.
  509. // The data also includes a representative city. For example, [ "PST",
  510. // "Pacific Standard Time", "PDT", "Pacific Daylight Time", "Los Angeles" ]
  511. // might be one such set of string names in the en_US locale. These strings
  512. // are intended to be shown to the user. The string data is indexed in the
  513. // system by a pair (String id, Locale locale). The id is the unique string
  514. // identifier for the rule for the given TimeZone (as passed to
  515. // TimeZone.getTimeZone()). String names are stored as localized resource
  516. // data of the class java.text.resources.DateFormatZoneData??? where ??? is
  517. // the Locale specifier (e.g., DateFormatZoneData_en_US). This data is a
  518. // two-dimensional array of strings with N rows and 6 columns. The columns
  519. // are id, short standard name, long standard name, short daylight name,
  520. // long daylight name, representative city name.
  521. //
  522. // The mapping between rules (SimpleTimeZone objects) and localized string
  523. // names (DateFormatZoneData objects) is one-to-many. That is, there will
  524. // sometimes be more than one localized string name sets associated with
  525. // each rule.
  526. //
  527. // Each locale can potentially have localized name data for all time zones.
  528. // Since we support approximately 90 time zones and approximately 50
  529. // locales, there can be over 4500 sets of localized names. In practice,
  530. // only a fraction of these names are provided. If a time zone needs to be
  531. // displayed to the user in a given locale, and there is no string data in
  532. // that locale for that time zone, then the default representation will be
  533. // shown. This is a string of the form GMT+HHMM or GMT-HHMM, where HHMM
  534. // represents the offset in hours and minutes with respect to GMT. This
  535. // format is used because it is recognized in all locales. In order to make
  536. // this mechanism to work, the root resource data (in the class
  537. // DateFormatZoneData) is left empty.
  538. //
  539. // The current default TimeZone is determined via the system property
  540. // user.timezone. This is set by the platform-dependent native code to
  541. // a three-letter abbreviation. We interpret these into our own internal
  542. // IDs using a lookup table.
  543. }
  544. /**
  545. * Encapsulates data for international timezones. This package-private class is for
  546. * internal use only by TimeZone. It encapsulates the list of recognized international
  547. * timezones. By implementing this as a separate class, the loading and initialization
  548. * cost for this array is delayed until a TimeZone object is actually created from its ID.
  549. * This class contains only static variables and static methods; it cannot be instantiated.
  550. */
  551. class TimeZoneData
  552. {
  553. static final TimeZone get(String ID) {
  554. Object o = lookup.get(ID);
  555. return o == null ? null : (TimeZone)((TimeZone)o).clone(); // [sic]
  556. }
  557. // ---------------- BEGIN GENERATED DATA ----------------
  558. private static final int ONE_HOUR = 60*60*1000;
  559. static SimpleTimeZone zones[] = {
  560. // The following data is current as of 1998.
  561. // Total Unix zones: 343
  562. // Total Java zones: 289
  563. // Not all Unix zones become Java zones due to duplication and overlap.
  564. //----------------------------------------------------------
  565. new SimpleTimeZone(-11*ONE_HOUR, "Pacific/Niue" /*NUT*/),
  566. // Pacific/Niue Niue(NU) -11:00 - NUT
  567. //----------------------------------------------------------
  568. new SimpleTimeZone(-11*ONE_HOUR, "Pacific/Apia" /*WST*/),
  569. // Pacific/Apia W Samoa(WS) -11:00 - WST # W Samoa Time
  570. new SimpleTimeZone(-11*ONE_HOUR, "MIT" /*alias for Pacific/Apia*/),
  571. //----------------------------------------------------------
  572. new SimpleTimeZone(-11*ONE_HOUR, "Pacific/Pago_Pago" /*SST*/),
  573. // Pacific/Pago_Pago American Samoa(US) -11:00 - SST # S=Samoa
  574. //----------------------------------------------------------
  575. new SimpleTimeZone(-10*ONE_HOUR, "Pacific/Tahiti" /*TAHT*/),
  576. // Pacific/Tahiti French Polynesia(PF) -10:00 - TAHT # Tahiti Time
  577. //----------------------------------------------------------
  578. new SimpleTimeZone(-10*ONE_HOUR, "Pacific/Fakaofo" /*TKT*/),
  579. // Pacific/Fakaofo Tokelau Is(TK) -10:00 - TKT # Tokelau Time
  580. //----------------------------------------------------------
  581. new SimpleTimeZone(-10*ONE_HOUR, "Pacific/Honolulu" /*HST*/),
  582. // Pacific/Honolulu Hawaii(US) -10:00 - HST
  583. new SimpleTimeZone(-10*ONE_HOUR, "HST" /*alias for Pacific/Honolulu*/),
  584. //----------------------------------------------------------
  585. new SimpleTimeZone(-10*ONE_HOUR, "America/Adak" /*HA%sT*/,
  586. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  587. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  588. // Rule US 1967 max - Oct lastSun 2:00 0 S
  589. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  590. // America/Adak Alaska(US) -10:00 US HA%sT
  591. //----------------------------------------------------------
  592. new SimpleTimeZone(-10*ONE_HOUR, "Pacific/Rarotonga") /*CK%sT*/,
  593. // Zone Pacific/Rarotonga Cook Is(CK) -10:00 Cook CK%sT
  594. //----------------------------------------------------------
  595. new SimpleTimeZone((int)(-9.5*ONE_HOUR), "Pacific/Marquesas" /*MART*/),
  596. // Pacific/Marquesas French Polynesia(PF) -9:30 - MART # Marquesas Time
  597. //----------------------------------------------------------
  598. new SimpleTimeZone(-9*ONE_HOUR, "Pacific/Gambier" /*GAMT*/),
  599. // Pacific/Gambier French Polynesia(PF) -9:00 - GAMT # Gambier Time
  600. //----------------------------------------------------------
  601. new SimpleTimeZone(-9*ONE_HOUR, "America/Anchorage" /*AK%sT*/,
  602. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  603. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  604. // Rule US 1967 max - Oct lastSun 2:00 0 S
  605. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  606. // America/Anchorage Alaska(US) -9:00 US AK%sT
  607. new SimpleTimeZone(-9*ONE_HOUR, "AST" /*alias for America/Anchorage*/,
  608. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  609. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  610. //----------------------------------------------------------
  611. new SimpleTimeZone((int)(-8.5*ONE_HOUR), "Pacific/Pitcairn" /*PNT*/),
  612. // Pacific/Pitcairn Pitcairn(PN) -8:30 - PNT # Pitcairn Time
  613. //----------------------------------------------------------
  614. new SimpleTimeZone(-8*ONE_HOUR, "America/Vancouver" /*P%sT*/,
  615. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  616. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  617. // Rule Vanc 1962 max - Oct lastSun 2:00 0 S
  618. // Rule Vanc 1987 max - Apr Sun>=1 2:00 1:00 D
  619. // America/Vancouver British Columbia(CA) -8:00 Vanc P%sT
  620. //----------------------------------------------------------
  621. new SimpleTimeZone(-8*ONE_HOUR, "America/Tijuana" /*P%sT*/,
  622. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  623. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  624. // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D
  625. // Rule Mexico 1996 max - Oct lastSun 2:00 0 S
  626. // America/Tijuana Mexico(MX) -8:00 Mexico P%sT
  627. //----------------------------------------------------------
  628. new SimpleTimeZone(-8*ONE_HOUR, "America/Los_Angeles" /*P%sT*/,
  629. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  630. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  631. // Rule US 1967 max - Oct lastSun 2:00 0 S
  632. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  633. // America/Los_Angeles US Pacific time, represented by Los Angeles(US) -8:00 US P%sT
  634. new SimpleTimeZone(-8*ONE_HOUR, "PST" /*alias for America/Los_Angeles*/,
  635. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  636. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  637. //----------------------------------------------------------
  638. new SimpleTimeZone(-7*ONE_HOUR, "America/Dawson_Creek" /*MST*/),
  639. // America/Dawson_Creek British Columbia(CA) -7:00 - MST
  640. //----------------------------------------------------------
  641. new SimpleTimeZone(-7*ONE_HOUR, "America/Phoenix" /*MST*/),
  642. // America/Phoenix ?(US) -7:00 - MST
  643. new SimpleTimeZone(-7*ONE_HOUR, "PNT" /*alias for America/Phoenix*/),
  644. //----------------------------------------------------------
  645. new SimpleTimeZone(-7*ONE_HOUR, "America/Edmonton" /*M%sT*/,
  646. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  647. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  648. // Rule Edm 1972 max - Oct lastSun 2:00 0 S
  649. // Rule Edm 1987 max - Apr Sun>=1 2:00 1:00 D
  650. // America/Edmonton Alberta(CA) -7:00 Edm M%sT
  651. //----------------------------------------------------------
  652. new SimpleTimeZone(-7*ONE_HOUR, "America/Mazatlan" /*M%sT*/,
  653. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  654. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  655. // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D
  656. // Rule Mexico 1996 max - Oct lastSun 2:00 0 S
  657. // America/Mazatlan Mexico(MX) -7:00 Mexico M%sT
  658. //----------------------------------------------------------
  659. new SimpleTimeZone(-7*ONE_HOUR, "America/Denver" /*M%sT*/,
  660. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  661. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  662. // Rule US 1967 max - Oct lastSun 2:00 0 S
  663. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  664. // America/Denver US Mountain time, represented by Denver(US) -7:00 US M%sT
  665. new SimpleTimeZone(-7*ONE_HOUR, "MST" /*alias for America/Denver*/,
  666. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  667. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  668. //----------------------------------------------------------
  669. new SimpleTimeZone(-6*ONE_HOUR, "America/Belize" /*C%sT*/),
  670. // America/Belize Belize(BZ) -6:00 - C%sT
  671. //----------------------------------------------------------
  672. new SimpleTimeZone(-6*ONE_HOUR, "America/Regina" /*CST*/),
  673. // America/Regina Saskatchewan(CA) -6:00 - CST
  674. //----------------------------------------------------------
  675. new SimpleTimeZone(-6*ONE_HOUR, "Pacific/Galapagos" /*GALT*/),
  676. // Pacific/Galapagos Ecuador(EC) -6:00 - GALT # Galapagos Time
  677. //----------------------------------------------------------
  678. new SimpleTimeZone(-6*ONE_HOUR, "America/Guatemala" /*C%sT*/),
  679. // America/Guatemala Guatemala(GT) -6:00 - C%sT
  680. //----------------------------------------------------------
  681. new SimpleTimeZone(-6*ONE_HOUR, "America/Tegucigalpa" /*C%sT*/),
  682. // America/Tegucigalpa Honduras(HN) -6:00 - C%sT
  683. //----------------------------------------------------------
  684. new SimpleTimeZone(-6*ONE_HOUR, "America/El_Salvador" /*C%sT*/),
  685. // America/El_Salvador El Salvador(SV) -6:00 - C%sT
  686. //----------------------------------------------------------
  687. new SimpleTimeZone(-6*ONE_HOUR, "America/Costa_Rica" /*C%sT*/),
  688. // America/Costa_Rica Costa Rica(CR) -6:00 - C%sT
  689. //----------------------------------------------------------
  690. new SimpleTimeZone(-6*ONE_HOUR, "America/Winnipeg" /*C%sT*/,
  691. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  692. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  693. // Rule Winn 1966 max - Oct lastSun 2:00 0 S
  694. // Rule Winn 1987 max - Apr Sun>=1 2:00 1:00 D
  695. // America/Winnipeg Manitoba(CA) -6:00 Winn C%sT
  696. //----------------------------------------------------------
  697. new SimpleTimeZone(-6*ONE_HOUR, "Pacific/Easter" /*EAS%sT*/,
  698. Calendar.OCTOBER, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  699. Calendar.MARCH, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  700. // Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S
  701. // Rule Chile 1970 max - Mar Sun>=9 0:00 0 -
  702. // Pacific/Easter Chile(CL) -6:00 Chile EAS%sT
  703. //----------------------------------------------------------
  704. new SimpleTimeZone(-6*ONE_HOUR, "America/Mexico_City" /*C%sT*/,
  705. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  706. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  707. // Rule Mexico 1996 max - Apr Sun>=1 2:00 1:00 D
  708. // Rule Mexico 1996 max - Oct lastSun 2:00 0 S
  709. // America/Mexico_City Mexico(MX) -6:00 Mexico C%sT
  710. //----------------------------------------------------------
  711. new SimpleTimeZone(-6*ONE_HOUR, "America/Chicago" /*C%sT*/,
  712. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  713. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  714. // Rule US 1967 max - Oct lastSun 2:00 0 S
  715. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  716. // America/Chicago US Central time, represented by Chicago(US) -6:00 US C%sT
  717. new SimpleTimeZone(-6*ONE_HOUR, "CST" /*alias for America/Chicago*/,
  718. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  719. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  720. //----------------------------------------------------------
  721. new SimpleTimeZone(-5*ONE_HOUR, "America/Porto_Acre" /*AST*/),
  722. // America/Porto_Acre Brazil(BR) -5:00 - AST
  723. //----------------------------------------------------------
  724. new SimpleTimeZone(-5*ONE_HOUR, "America/Bogota" /*CO%sT*/),
  725. // America/Bogota Colombia(CO) -5:00 - CO%sT # Colombia Time
  726. //----------------------------------------------------------
  727. new SimpleTimeZone(-5*ONE_HOUR, "America/Guayaquil" /*ECT*/),
  728. // America/Guayaquil Ecuador(EC) -5:00 - ECT # Ecuador Time
  729. //----------------------------------------------------------
  730. new SimpleTimeZone(-5*ONE_HOUR, "America/Jamaica" /*EST*/),
  731. // America/Jamaica Jamaica(JM) -5:00 - EST
  732. //----------------------------------------------------------
  733. new SimpleTimeZone(-5*ONE_HOUR, "America/Cayman" /*EST*/),
  734. // America/Cayman Cayman Is(KY) -5:00 - EST
  735. //----------------------------------------------------------
  736. new SimpleTimeZone(-5*ONE_HOUR, "America/Managua" /*EST*/),
  737. // America/Managua Nicaragua(NI) -5:00 - EST
  738. //----------------------------------------------------------
  739. new SimpleTimeZone(-5*ONE_HOUR, "America/Panama" /*EST*/),
  740. // America/Panama Panama(PA) -5:00 - EST
  741. //----------------------------------------------------------
  742. new SimpleTimeZone(-5*ONE_HOUR, "America/Lima" /*PE%sT*/),
  743. // America/Lima Peru(PE) -5:00 - PE%sT # Peru Time
  744. //----------------------------------------------------------
  745. new SimpleTimeZone(-5*ONE_HOUR, "America/Indianapolis" /*EST*/),
  746. // America/Indianapolis Indiana(US) -5:00 - EST
  747. new SimpleTimeZone(-5*ONE_HOUR, "IET" /*alias for America/Indianapolis*/),
  748. //----------------------------------------------------------
  749. new SimpleTimeZone(-5*ONE_HOUR, "America/Nassau" /*E%sT*/,
  750. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  751. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  752. // Rule Bahamas 1964 max - Oct lastSun 2:00 0 S
  753. // Rule Bahamas 1987 max - Apr Sun>=1 2:00 1:00 D
  754. // America/Nassau Bahamas(BS) -5:00 Bahamas E%sT
  755. //----------------------------------------------------------
  756. new SimpleTimeZone(-5*ONE_HOUR, "America/Montreal" /*E%sT*/,
  757. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  758. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  759. // Rule Mont 1957 max - Oct lastSun 2:00 0 S
  760. // Rule Mont 1987 max - Apr Sun>=1 2:00 1:00 D
  761. // America/Montreal Ontario, Quebec(CA) -5:00 Mont E%sT
  762. //----------------------------------------------------------
  763. new SimpleTimeZone(-5*ONE_HOUR, "America/Havana" /*C%sT*/,
  764. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 0,
  765. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 1*ONE_HOUR, 1*ONE_HOUR),
  766. // Rule Cuba 1998 max - Mar lastSun 0:00s 1:00 D
  767. // Rule Cuba 1998 max - Oct lastSun 0:00s 0 S
  768. // Zone America/Havana Cuba(CU) -5:00 Cuba C%sT
  769. //----------------------------------------------------------
  770. new SimpleTimeZone(-5*ONE_HOUR, "America/Port-au-Prince"),
  771. // Zone America/Port-au-Prince Haiti(HT) -5:00 Haiti E%sT
  772. //----------------------------------------------------------
  773. new SimpleTimeZone(-5*ONE_HOUR, "America/Grand_Turk" /*E%sT*/,
  774. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  775. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  776. // Rule TC 1979 max - Oct lastSun 0:00 0 S
  777. // Rule TC 1987 max - Apr Sun>=1 0:00 1:00 D
  778. // America/Grand_Turk Turks and Caicos(TC) -5:00 TC E%sT
  779. //----------------------------------------------------------
  780. new SimpleTimeZone(-5*ONE_HOUR, "America/New_York" /*E%sT*/,
  781. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  782. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  783. // Rule US 1967 max - Oct lastSun 2:00 0 S
  784. // Rule US 1987 max - Apr Sun>=1 2:00 1:00 D
  785. // America/New_York US Eastern time, represented by New York(US) -5:00 US E%sT
  786. new SimpleTimeZone(-5*ONE_HOUR, "EST" /*alias for America/New_York*/,
  787. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  788. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  789. //----------------------------------------------------------
  790. new SimpleTimeZone(-4*ONE_HOUR, "America/Antigua" /*AST*/),
  791. // America/Antigua Antigua and Barbuda(AG) -4:00 - AST
  792. //----------------------------------------------------------
  793. new SimpleTimeZone(-4*ONE_HOUR, "America/Anguilla" /*AST*/),
  794. // America/Anguilla Anguilla(AI) -4:00 - AST
  795. //----------------------------------------------------------
  796. new SimpleTimeZone(-4*ONE_HOUR, "America/Curacao" /*AST*/),
  797. // America/Curacao Curacao(AN) -4:00 - AST
  798. //----------------------------------------------------------
  799. new SimpleTimeZone(-4*ONE_HOUR, "America/Aruba" /*AST*/),
  800. // America/Aruba Aruba(AW) -4:00 - AST
  801. //----------------------------------------------------------
  802. new SimpleTimeZone(-4*ONE_HOUR, "America/Barbados" /*A%sT*/),
  803. // America/Barbados Barbados(BB) -4:00 - A%sT
  804. //----------------------------------------------------------
  805. new SimpleTimeZone(-4*ONE_HOUR, "America/La_Paz" /*BOT*/),
  806. // America/La_Paz Bolivia(BO) -4:00 - BOT # Bolivia Time
  807. //----------------------------------------------------------
  808. new SimpleTimeZone(-4*ONE_HOUR, "America/Manaus" /*WST*/),
  809. // America/Manaus Brazil(BR) -4:00 - WST
  810. //----------------------------------------------------------
  811. new SimpleTimeZone(-4*ONE_HOUR, "America/Dominica" /*AST*/),
  812. // America/Dominica Dominica(DM) -4:00 - AST
  813. //----------------------------------------------------------
  814. new SimpleTimeZone(-4*ONE_HOUR, "America/Santo_Domingo" /*AST*/),
  815. // America/Santo_Domingo Dominican Republic(DO) -4:00 - AST
  816. //----------------------------------------------------------
  817. new SimpleTimeZone(-4*ONE_HOUR, "America/Grenada" /*AST*/),
  818. // America/Grenada Grenada(GD) -4:00 - AST
  819. //----------------------------------------------------------
  820. new SimpleTimeZone(-4*ONE_HOUR, "America/Guadeloupe" /*AST*/),
  821. // America/Guadeloupe Guadeloupe(GP) -4:00 - AST
  822. //----------------------------------------------------------
  823. new SimpleTimeZone(-4*ONE_HOUR, "America/Guyana" /*GYT*/),
  824. // America/Guyana Guyana(GY) -4:00 - GYT
  825. //----------------------------------------------------------
  826. new SimpleTimeZone(-4*ONE_HOUR, "America/St_Kitts" /*AST*/),
  827. // America/St_Kitts St Kitts-Nevis(KN) -4:00 - AST
  828. //----------------------------------------------------------
  829. new SimpleTimeZone(-4*ONE_HOUR, "America/St_Lucia" /*AST*/),
  830. // America/St_Lucia St Lucia(LC) -4:00 - AST
  831. //----------------------------------------------------------
  832. new SimpleTimeZone(-4*ONE_HOUR, "America/Martinique" /*AST*/),
  833. // America/Martinique Martinique(MQ) -4:00 - AST
  834. //----------------------------------------------------------
  835. new SimpleTimeZone(-4*ONE_HOUR, "America/Montserrat" /*AST*/),
  836. // America/Montserrat Montserrat(MS) -4:00 - AST
  837. //----------------------------------------------------------
  838. new SimpleTimeZone(-4*ONE_HOUR, "America/Puerto_Rico" /*AST*/),
  839. // America/Puerto_Rico Puerto Rico(PR) -4:00 - AST
  840. new SimpleTimeZone(-4*ONE_HOUR, "PRT" /*alias for America/Puerto_Rico*/),
  841. //----------------------------------------------------------
  842. new SimpleTimeZone(-4*ONE_HOUR, "America/Port_of_Spain" /*AST*/),
  843. // America/Port_of_Spain Trinidad and Tobago(TT) -4:00 - AST
  844. //----------------------------------------------------------
  845. new SimpleTimeZone(-4*ONE_HOUR, "America/St_Vincent" /*AST*/),
  846. // America/St_Vincent St Vincent and the Grenadines(VC) -4:00 - AST
  847. //----------------------------------------------------------
  848. new SimpleTimeZone(-4*ONE_HOUR, "America/Tortola" /*AST*/),
  849. // America/Tortola British Virgin Is(VG) -4:00 - AST
  850. //----------------------------------------------------------
  851. new SimpleTimeZone(-4*ONE_HOUR, "America/St_Thomas" /*AST*/),
  852. // America/St_Thomas Virgin Is(VI) -4:00 - AST
  853. //----------------------------------------------------------
  854. new SimpleTimeZone(-4*ONE_HOUR, "America/Caracas" /*VET*/),
  855. // America/Caracas Venezuela(VE) -4:00 - VET
  856. //----------------------------------------------------------
  857. new SimpleTimeZone(-4*ONE_HOUR, "Antarctica/Palmer" /*CL%sT*/,
  858. Calendar.OCTOBER, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  859. Calendar.MARCH, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  860. // Rule ChileAQ 1969 max - Oct Sun>=9 0:00 1:00 S
  861. // Rule ChileAQ 1970 max - Mar Sun>=9 0:00 0 -
  862. // Antarctica/Palmer USA - year-round bases(AQ) -4:00 ChileAQ CL%sT
  863. //----------------------------------------------------------
  864. new SimpleTimeZone(-4*ONE_HOUR, "Atlantic/Bermuda" /*A%sT*/,
  865. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  866. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  867. // Rule Bahamas 1964 max - Oct lastSun 2:00 0 S
  868. // Rule Bahamas 1987 max - Apr Sun>=1 2:00 1:00 D
  869. // Atlantic/Bermuda Bermuda(BM) -4:00 Bahamas A%sT
  870. //----------------------------------------------------------
  871. new SimpleTimeZone(-4*ONE_HOUR, "America/Cuiaba"),
  872. // Zone America/Cuiaba Brazil(BR) -4:00 - WST
  873. //----------------------------------------------------------
  874. new SimpleTimeZone(-4*ONE_HOUR, "America/Halifax" /*A%sT*/,
  875. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  876. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  877. // Rule Halifax 1962 max - Oct lastSun 2:00 0 S
  878. // Rule Halifax 1987 max - Apr Sun>=1 2:00 1:00 D
  879. // America/Halifax ?(CA) -4:00 Halifax A%sT
  880. //----------------------------------------------------------
  881. new SimpleTimeZone(-4*ONE_HOUR, "Atlantic/Stanley" /*FK%sT*/,
  882. Calendar.SEPTEMBER, 8, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  883. Calendar.APRIL, 16, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  884. // Rule Falk 1986 max - Apr Sun>=16 0:00 0 -
  885. // Rule Falk 1996 max - Sep Sun>=8 0:00 1:00 S
  886. // Atlantic/Stanley Falklands(FK) -4:00 Falk FK%sT
  887. //----------------------------------------------------------
  888. new SimpleTimeZone(-4*ONE_HOUR, "America/Thule" /*A%sT*/,
  889. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  890. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  891. // Rule Thule 1993 max - Apr Sun>=1 2:00 1:00 D
  892. // Rule Thule 1993 max - Oct lastSun 2:00 0 S
  893. // America/Thule ?(GL) -4:00 Thule A%sT
  894. //----------------------------------------------------------
  895. new SimpleTimeZone(-4*ONE_HOUR, "America/Asuncion" /*PY%sT*/,
  896. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  897. Calendar.FEBRUARY, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR, 1*ONE_HOUR),
  898. // Rule Para 1996 max - Oct Sun>=1 0:00 1:00 S
  899. // Rule Para 1999 max - Feb lastSun 0:00 0 -
  900. // Zone America/Asuncion Paraguay(PY) -4:00 Para PY%sT
  901. //----------------------------------------------------------
  902. new SimpleTimeZone(-4*ONE_HOUR, "America/Santiago" /*CL%sT*/,
  903. Calendar.OCTOBER, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  904. Calendar.MARCH, 9, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  905. // Rule Chile 1969 max - Oct Sun>=9 0:00 1:00 S
  906. // Rule Chile 1970 max - Mar Sun>=9 0:00 0 -
  907. // America/Santiago Chile(CL) -4:00 Chile CL%sT
  908. //----------------------------------------------------------
  909. new SimpleTimeZone((int)(-3.5*ONE_HOUR), "America/St_Johns" /*N%sT*/,
  910. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  911. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  912. // Rule StJohns 1960 max - Oct lastSun 2:00 0 S
  913. // Rule StJohns 1989 max - Apr Sun>=1 2:00 1:00 D
  914. // America/St_Johns Canada(CA) -3:30 StJohns N%sT
  915. new SimpleTimeZone((int)(-3.5*ONE_HOUR), "CNT" /*alias for America/St_Johns*/,
  916. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  917. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  918. //----------------------------------------------------------
  919. new SimpleTimeZone(-3*ONE_HOUR, "America/Fortaleza" /*EST*/),
  920. // America/Fortaleza Brazil(BR) -3:00 - EST
  921. //----------------------------------------------------------
  922. new SimpleTimeZone(-3*ONE_HOUR, "America/Cayenne" /*GFT*/),
  923. // America/Cayenne French Guiana(GF) -3:00 - GFT
  924. //----------------------------------------------------------
  925. new SimpleTimeZone(-3*ONE_HOUR, "America/Paramaribo" /*SRT*/),
  926. // America/Paramaribo Suriname(SR) -3:00 - SRT
  927. //----------------------------------------------------------
  928. new SimpleTimeZone(-3*ONE_HOUR, "America/Montevideo" /*UY%sT*/),
  929. // America/Montevideo Uruguay(UY) -3:00 - UY%sT
  930. //----------------------------------------------------------
  931. new SimpleTimeZone(-3*ONE_HOUR, "America/Buenos_Aires" /*AR%sT*/),
  932. // America/Buenos_Aires Argentina(AR) -3:00 - AR%sT
  933. new SimpleTimeZone(-3*ONE_HOUR, "AGT" /*alias for America/Buenos_Aires*/),
  934. //----------------------------------------------------------
  935. new SimpleTimeZone(-3*ONE_HOUR, "America/Godthab" /*WG%sT*/,
  936. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR,
  937. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR, 1*ONE_HOUR),
  938. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  939. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  940. // Zone America/Godthab ?(GL) -3:00 EU WG%sT
  941. //----------------------------------------------------------
  942. new SimpleTimeZone(-3*ONE_HOUR, "America/Miquelon" /*PM%sT*/,
  943. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  944. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  945. // Rule Mont 1957 max - Oct lastSun 2:00 0 S
  946. // Rule Mont 1987 max - Apr Sun>=1 2:00 1:00 D
  947. // America/Miquelon St Pierre and Miquelon(PM) -3:00 Mont PM%sT # Pierre & Miquelon Time
  948. //----------------------------------------------------------
  949. new SimpleTimeZone(-3*ONE_HOUR, "America/Sao_Paulo" /*E%sT*/,
  950. Calendar.OCTOBER, 8, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  951. Calendar.FEBRUARY, 15, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  952. // Rule Brazil 1998 max - Oct Sun>=8 0:00 1:00 D
  953. // Rule Brazil 1999 max - Feb Sun>=15 0:00 0 S
  954. // Zone America/Sao_Paulo Brazil(BR) -3:00 Brazil E%sT
  955. new SimpleTimeZone(-3*ONE_HOUR, "BET" /*alias for America/Sao_Paulo*/,
  956. Calendar.OCTOBER, 8, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  957. Calendar.FEBRUARY, 15, -Calendar.SUNDAY /*DOW>=DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  958. //----------------------------------------------------------
  959. new SimpleTimeZone(-2*ONE_HOUR, "America/Noronha" /*FST*/),
  960. // America/Noronha Brazil(BR) -2:00 - FST
  961. //----------------------------------------------------------
  962. new SimpleTimeZone(-2*ONE_HOUR, "Atlantic/South_Georgia" /*GST*/),
  963. // Atlantic/South_Georgia South Georgia(GS) -2:00 - GST # South Georgia Time
  964. //----------------------------------------------------------
  965. new SimpleTimeZone(-1*ONE_HOUR, "Atlantic/Jan_Mayen" /*EGT*/),
  966. // Atlantic/Jan_Mayen ?(NO) -1:00 - EGT
  967. //----------------------------------------------------------
  968. new SimpleTimeZone(-1*ONE_HOUR, "Atlantic/Cape_Verde" /*CVT*/),
  969. // Atlantic/Cape_Verde Cape Verde(CV) -1:00 - CVT
  970. //----------------------------------------------------------
  971. new SimpleTimeZone(-1*ONE_HOUR, "America/Scoresbysund" /*EG%sT*/,
  972. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 0,
  973. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 1*ONE_HOUR, 1*ONE_HOUR),
  974. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  975. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  976. // Zone America/Scoresbysund ?(GL) -1:00 EU EG%sT
  977. //----------------------------------------------------------
  978. new SimpleTimeZone(-1*ONE_HOUR, "Atlantic/Azores" /*AZO%sT*/,
  979. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 0,
  980. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 1*ONE_HOUR, 1*ONE_HOUR),
  981. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  982. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  983. // Zone Atlantic/Azores Portugal(PT) -1:00 EU AZO%sT
  984. //----------------------------------------------------------
  985. new SimpleTimeZone(0*ONE_HOUR, "Africa/Ouagadougou" /*GMT*/),
  986. // Africa/Ouagadougou Burkina Faso(BF) 0:00 - GMT
  987. //----------------------------------------------------------
  988. new SimpleTimeZone(0*ONE_HOUR, "Africa/Abidjan" /*GMT*/),
  989. // Africa/Abidjan Cote D'Ivoire(CI) 0:00 - GMT
  990. //----------------------------------------------------------
  991. new SimpleTimeZone(0*ONE_HOUR, "Africa/Accra" /*%s*/),
  992. // Africa/Accra Ghana(GH) 0:00 - %s
  993. //----------------------------------------------------------
  994. new SimpleTimeZone(0*ONE_HOUR, "Africa/Banjul" /*GMT*/),
  995. // Africa/Banjul Gambia(GM) 0:00 - GMT
  996. //----------------------------------------------------------
  997. new SimpleTimeZone(0*ONE_HOUR, "Africa/Conakry" /*GMT*/),
  998. // Africa/Conakry Guinea(GN) 0:00 - GMT
  999. //----------------------------------------------------------
  1000. new SimpleTimeZone(0*ONE_HOUR, "Africa/Bissau" /*GMT*/),
  1001. // Africa/Bissau Guinea-Bissau(GW) 0:00 - GMT
  1002. //----------------------------------------------------------
  1003. new SimpleTimeZone(0*ONE_HOUR, "Atlantic/Reykjavik" /*GMT*/),
  1004. // Atlantic/Reykjavik Iceland(IS) 0:00 - GMT
  1005. //----------------------------------------------------------
  1006. new SimpleTimeZone(0*ONE_HOUR, "Africa/Monrovia" /*GMT*/),
  1007. // Africa/Monrovia Liberia(LR) 0:00 - GMT
  1008. //----------------------------------------------------------
  1009. new SimpleTimeZone(0*ONE_HOUR, "Africa/Casablanca" /*WET*/),
  1010. // Africa/Casablanca Morocco(MA) 0:00 - WET
  1011. //----------------------------------------------------------
  1012. new SimpleTimeZone(0*ONE_HOUR, "Africa/Timbuktu" /*GMT*/),
  1013. // Africa/Timbuktu Mali(ML) 0:00 - GMT
  1014. //----------------------------------------------------------
  1015. new SimpleTimeZone(0*ONE_HOUR, "Africa/Nouakchott" /*GMT*/),
  1016. // Africa/Nouakchott Mauritania(MR) 0:00 - GMT
  1017. //----------------------------------------------------------
  1018. new SimpleTimeZone(0*ONE_HOUR, "Atlantic/St_Helena" /*GMT*/),
  1019. // Atlantic/St_Helena St Helena(SH) 0:00 - GMT
  1020. //----------------------------------------------------------
  1021. new SimpleTimeZone(0*ONE_HOUR, "Africa/Freetown" /*%s*/),
  1022. // Africa/Freetown Sierra Leone(SL) 0:00 - %s
  1023. //----------------------------------------------------------
  1024. new SimpleTimeZone(0*ONE_HOUR, "Africa/Dakar" /*GMT*/),
  1025. // Africa/Dakar Senegal(SN) 0:00 - GMT
  1026. //----------------------------------------------------------
  1027. new SimpleTimeZone(0*ONE_HOUR, "Africa/Sao_Tome" /*GMT*/),
  1028. // Africa/Sao_Tome Sao Tome and Principe(ST) 0:00 - GMT
  1029. //----------------------------------------------------------
  1030. new SimpleTimeZone(0*ONE_HOUR, "Africa/Lome" /*GMT*/),
  1031. // Africa/Lome Togo(TG) 0:00 - GMT
  1032. //----------------------------------------------------------
  1033. new SimpleTimeZone(0*ONE_HOUR, "GMT" /*GMT*/),
  1034. // GMT -(-) 0:00 - GMT
  1035. new SimpleTimeZone(0*ONE_HOUR, "UTC" /*alias for GMT*/),
  1036. //----------------------------------------------------------
  1037. new SimpleTimeZone(0*ONE_HOUR, "Atlantic/Faeroe" /*AZO%sT*/,
  1038. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR,
  1039. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1040. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1041. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1042. // Zone Atlantic/Faeroe Denmark, Faeroe Islands, and Greenland(DK) 0:00 EU WE%sT
  1043. //----------------------------------------------------------
  1044. new SimpleTimeZone(0*ONE_HOUR, "Atlantic/Canary" /*AZO%sT*/,
  1045. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR,
  1046. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1047. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1048. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1049. // Zone Atlantic/Canary Spain(ES) 0:00 EU WE%sT
  1050. //----------------------------------------------------------
  1051. new SimpleTimeZone(0*ONE_HOUR, "Europe/Dublin" /*GMT/IST*/,
  1052. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 1*ONE_HOUR,
  1053. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1054. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1055. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1056. // Zone Europe/Dublin ---(IE) 0:00 EU GMT/IST
  1057. //----------------------------------------------------------
  1058. new SimpleTimeZone(0*ONE_HOUR, "Europe/Lisbon" /*WE%sT*/,
  1059. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 1*ONE_HOUR,
  1060. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_GE_DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1061. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1062. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1063. // Zone Europe/Lisbon Portugal(PT) 0:00 EU WE%sT
  1064. //----------------------------------------------------------
  1065. new SimpleTimeZone(0*ONE_HOUR, "Europe/London" /*GMT/BST*/,
  1066. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR,
  1067. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1068. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1069. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1070. // Zone Europe/London ---(GB) 0:00 EU GMT/BST
  1071. //----------------------------------------------------------
  1072. new SimpleTimeZone(0*ONE_HOUR, "WET" /*WET*/,
  1073. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR,
  1074. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1075. //----------------------------------------------------------
  1076. new SimpleTimeZone(1*ONE_HOUR, "Africa/Luanda" /*WAT*/),
  1077. // Africa/Luanda Angola(AO) 1:00 - WAT
  1078. //----------------------------------------------------------
  1079. new SimpleTimeZone(1*ONE_HOUR, "Africa/Porto-Novo" /*WAT*/),
  1080. // Africa/Porto-Novo Benin(BJ) 1:00 - WAT
  1081. //----------------------------------------------------------
  1082. new SimpleTimeZone(1*ONE_HOUR, "Africa/Bangui" /*WAT*/),
  1083. // Africa/Bangui Central African Republic(CF) 1:00 - WAT
  1084. //----------------------------------------------------------
  1085. new SimpleTimeZone(1*ONE_HOUR, "Africa/Kinshasa" /*WAT*/),
  1086. // Africa/Kinshasa Democratic Republic of Congo(CG) 1:00 - WAT
  1087. //----------------------------------------------------------
  1088. new SimpleTimeZone(1*ONE_HOUR, "Africa/Douala" /*WAT*/),
  1089. // Africa/Douala Cameroon(CM) 1:00 - WAT
  1090. //----------------------------------------------------------
  1091. new SimpleTimeZone(1*ONE_HOUR, "Africa/Libreville" /*WAT*/),
  1092. // Africa/Libreville Gabon(GA) 1:00 - WAT
  1093. //----------------------------------------------------------
  1094. new SimpleTimeZone(1*ONE_HOUR, "Africa/Malabo" /*WAT*/),
  1095. // Africa/Malabo Equatorial Guinea(GQ) 1:00 - WAT
  1096. //----------------------------------------------------------
  1097. new SimpleTimeZone(1*ONE_HOUR, "Africa/Niamey" /*WAT*/),
  1098. // Africa/Niamey Niger(NE) 1:00 - WAT
  1099. //----------------------------------------------------------
  1100. new SimpleTimeZone(1*ONE_HOUR, "Africa/Lagos" /*WAT*/),
  1101. // Africa/Lagos Nigeria(NG) 1:00 - WAT
  1102. //----------------------------------------------------------
  1103. new SimpleTimeZone(1*ONE_HOUR, "Africa/Ndjamena" /*WAT*/),
  1104. // Africa/Ndjamena Chad(TD) 1:00 - WAT
  1105. //----------------------------------------------------------
  1106. new SimpleTimeZone(1*ONE_HOUR, "Africa/Tunis" /*CE%sT*/),
  1107. // Africa/Tunis Tunisia(TN) 1:00 - CE%sT
  1108. //----------------------------------------------------------
  1109. new SimpleTimeZone(1*ONE_HOUR, "Africa/Algiers" /*CET*/),
  1110. // Africa/Algiers Algeria(DZ) 1:00 - CET
  1111. //----------------------------------------------------------
  1112. new SimpleTimeZone(1*ONE_HOUR, "Europe/Andorra" /*CE%sT*/,
  1113. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1114. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1115. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1116. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1117. // Zone Europe/Andorra Andorra(AD) 1:00 EU CE%sT
  1118. //----------------------------------------------------------
  1119. new SimpleTimeZone(1*ONE_HOUR, "Europe/Tirane" /*CE%sT*/,
  1120. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1121. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1122. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1123. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1124. // Zone Europe/Tirane Albania(AL) 1:00 EU CE%sT
  1125. //----------------------------------------------------------
  1126. new SimpleTimeZone(1*ONE_HOUR, "Europe/Vienna" /*CE%sT*/,
  1127. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1128. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1129. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1130. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1131. // Zone Europe/Vienna Austria(AT) 1:00 EU CE%sT
  1132. //----------------------------------------------------------
  1133. new SimpleTimeZone(1*ONE_HOUR, "Europe/Brussels" /*CE%sT*/,
  1134. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1135. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1136. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1137. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1138. // Zone Europe/Brussels Belgium(BE) 1:00 EU CE%sT
  1139. //----------------------------------------------------------
  1140. new SimpleTimeZone(1*ONE_HOUR, "Europe/Zurich" /*CE%sT*/,
  1141. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1142. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1143. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1144. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1145. // Zone Europe/Zurich Switzerland(CH) 1:00 EU CE%sT
  1146. //----------------------------------------------------------
  1147. new SimpleTimeZone(1*ONE_HOUR, "Europe/Prague" /*CE%sT*/,
  1148. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1149. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1150. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1151. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1152. // Zone Europe/Prague Czech Republic(CZ) 1:00 EU CE%sT
  1153. //----------------------------------------------------------
  1154. new SimpleTimeZone(1*ONE_HOUR, "Europe/Berlin" /*CE%sT*/,
  1155. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1156. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1157. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1158. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1159. // Zone Europe/Berlin Germany(DE) 1:00 EU CE%sT
  1160. //----------------------------------------------------------
  1161. new SimpleTimeZone(1*ONE_HOUR, "Europe/Copenhagen" /*CE%sT*/,
  1162. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1163. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1164. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1165. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1166. // Zone Europe/Copenhagen Denmark, Faeroe Islands, and Greenland(DK) 1:00 EU CE%sT
  1167. //----------------------------------------------------------
  1168. new SimpleTimeZone(1*ONE_HOUR, "Europe/Madrid" /*CE%sT*/,
  1169. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1170. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1171. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1172. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1173. // Zone Europe/Madrid Spain(ES) 1:00 EU CE%sT
  1174. //----------------------------------------------------------
  1175. new SimpleTimeZone(1*ONE_HOUR, "Europe/Gibraltar" /*CE%sT*/,
  1176. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1177. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1178. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1179. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1180. // Zone Europe/Gibraltar Gibraltar(GI) 1:00 EU CE%sT
  1181. //----------------------------------------------------------
  1182. new SimpleTimeZone(1*ONE_HOUR, "Europe/Budapest" /*CE%sT*/,
  1183. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1184. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1185. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1186. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1187. // Zone Europe/Budapest Hungary(HU) 1:00 EU CE%sT
  1188. //----------------------------------------------------------
  1189. new SimpleTimeZone(1*ONE_HOUR, "Europe/Rome" /*CE%sT*/,
  1190. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1191. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1192. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1193. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1194. // Zone Europe/Rome Italy(IT) 1:00 EU CE%sT
  1195. //----------------------------------------------------------
  1196. new SimpleTimeZone(1*ONE_HOUR, "Europe/Vaduz" /*CE%sT*/,
  1197. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1198. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1199. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1200. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1201. // Zone Europe/Vaduz Liechtenstein(LI) 1:00 EU CE%sT
  1202. //----------------------------------------------------------
  1203. new SimpleTimeZone(1*ONE_HOUR, "Europe/Luxembourg" /*CE%sT*/,
  1204. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1205. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1206. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1207. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1208. // Zone Europe/Luxembourg Luxembourg(LU) 1:00 EU CE%sT
  1209. //----------------------------------------------------------
  1210. new SimpleTimeZone(2*ONE_HOUR, "Africa/Tripoli") /*CE%sT*/,
  1211. // Zone Africa/Tripoli Libya(LY) 2:00 - EET
  1212. //----------------------------------------------------------
  1213. new SimpleTimeZone(1*ONE_HOUR, "Europe/Monaco" /*CE%sT*/,
  1214. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1215. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1216. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1217. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1218. // Zone Europe/Monaco Monaco(MC) 1:00 EU CE%sT
  1219. //----------------------------------------------------------
  1220. new SimpleTimeZone(1*ONE_HOUR, "Europe/Malta" /*CE%sT*/,
  1221. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1222. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1223. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1224. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1225. // Zone Europe/Malta Malta(MT) 1:00 EU CE%sT
  1226. //----------------------------------------------------------
  1227. new SimpleTimeZone(1*ONE_HOUR, "Africa/Windhoek" /*WA%sT*/,
  1228. Calendar.SEPTEMBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1229. Calendar.APRIL, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1230. // Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S
  1231. // Rule Namibia 1995 max - Apr Sun>=1 2:00 0 -
  1232. // Africa/Windhoek Namibia(NA) 1:00 Namibia WA%sT
  1233. //----------------------------------------------------------
  1234. new SimpleTimeZone(1*ONE_HOUR, "Europe/Amsterdam" /*CE%sT*/,
  1235. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1236. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1237. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1238. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1239. // Zone Europe/Amsterdam Netherlands(NL) 1:00 EU CE%sT
  1240. //----------------------------------------------------------
  1241. new SimpleTimeZone(1*ONE_HOUR, "Europe/Oslo" /*CE%sT*/,
  1242. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1243. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1244. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1245. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1246. // Zone Europe/Oslo Norway(NO) 1:00 EU CE%sT
  1247. //----------------------------------------------------------
  1248. new SimpleTimeZone(1*ONE_HOUR, "Europe/Warsaw" /*CE%sT*/,
  1249. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1250. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1251. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1252. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1253. // Zone Europe/Warsaw 1:00 EU CE%sT
  1254. //----------------------------------------------------------
  1255. new SimpleTimeZone(1*ONE_HOUR, "Europe/Stockholm" /*CE%sT*/,
  1256. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1257. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1258. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1259. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1260. // Zone Europe/Stockholm Sweden(SE) 1:00 EU CE%sT
  1261. //----------------------------------------------------------
  1262. new SimpleTimeZone(1*ONE_HOUR, "Europe/Belgrade" /*CE%sT*/,
  1263. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1264. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1265. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1266. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1267. // Zone Europe/Belgrade Yugoslavia(YU) 1:00 EU CE%sT
  1268. //----------------------------------------------------------
  1269. new SimpleTimeZone(1*ONE_HOUR, "Europe/Paris" /*CE%sT*/,
  1270. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1271. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1272. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1273. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1274. // Zone Europe/Paris France(FR) 1:00 EU CE%sT
  1275. new SimpleTimeZone(1*ONE_HOUR, "ECT" /*alias for Europe/Paris*/,
  1276. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1277. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1278. //----------------------------------------------------------
  1279. new SimpleTimeZone(2*ONE_HOUR, "Africa/Bujumbura" /*CAT*/),
  1280. // Africa/Bujumbura Burundi(BI) 2:00 - CAT
  1281. //----------------------------------------------------------
  1282. new SimpleTimeZone(2*ONE_HOUR, "Africa/Gaborone" /*CAT*/),
  1283. // Africa/Gaborone Botswana(BW) 2:00 - CAT
  1284. //----------------------------------------------------------
  1285. new SimpleTimeZone(2*ONE_HOUR, "Africa/Lubumbashi" /*CAT*/),
  1286. // Africa/Lubumbashi Democratic Republic of Congo(CG) 2:00 - CAT
  1287. //----------------------------------------------------------
  1288. new SimpleTimeZone(2*ONE_HOUR, "Africa/Maseru" /*SAST*/),
  1289. // Africa/Maseru Lesotho(LS) 2:00 - SAST
  1290. //----------------------------------------------------------
  1291. new SimpleTimeZone(2*ONE_HOUR, "Africa/Blantyre" /*CAT*/),
  1292. // Africa/Blantyre Malawi(ML) 2:00 - CAT
  1293. //----------------------------------------------------------
  1294. new SimpleTimeZone(2*ONE_HOUR, "Africa/Maputo" /*CAT*/),
  1295. // Africa/Maputo Mozambique(MZ) 2:00 - CAT
  1296. //----------------------------------------------------------
  1297. new SimpleTimeZone(2*ONE_HOUR, "Africa/Kigali" /*CAT*/),
  1298. // Africa/Kigali Rwanda(RW) 2:00 - CAT
  1299. //----------------------------------------------------------
  1300. new SimpleTimeZone(2*ONE_HOUR, "Africa/Khartoum" /*CA%sT*/),
  1301. // Africa/Khartoum Sudan(SD) 2:00 - CA%sT
  1302. //----------------------------------------------------------
  1303. new SimpleTimeZone(2*ONE_HOUR, "Africa/Mbabane" /*SAST*/),
  1304. // Africa/Mbabane Swaziland(SZ) 2:00 - SAST
  1305. //----------------------------------------------------------
  1306. new SimpleTimeZone(2*ONE_HOUR, "Africa/Lusaka" /*CAT*/),
  1307. // Africa/Lusaka Zambia(ZM) 2:00 - CAT
  1308. //----------------------------------------------------------
  1309. new SimpleTimeZone(2*ONE_HOUR, "Africa/Harare" /*CAT*/),
  1310. // Africa/Harare Zimbabwe(ZW) 2:00 - CAT
  1311. new SimpleTimeZone(2*ONE_HOUR, "CAT" /*alias for Africa/Harare*/),
  1312. //----------------------------------------------------------
  1313. new SimpleTimeZone(2*ONE_HOUR, "Africa/Johannesburg" /*SAST*/),
  1314. // Africa/Johannesburg South Africa(ZA) 2:00 - SAST
  1315. //----------------------------------------------------------
  1316. new SimpleTimeZone(2*ONE_HOUR, "Europe/Sofia" /*EE%sT*/,
  1317. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1318. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1319. // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
  1320. // Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
  1321. // Europe/Sofia Bulgaria(BG) 2:00 E-Eur EE%sT
  1322. //----------------------------------------------------------
  1323. new SimpleTimeZone(2*ONE_HOUR, "Europe/Minsk" /*EE%sT*/,
  1324. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1325. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1326. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1327. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1328. // Europe/Minsk Belarus(BY) 2:00 Russia EE%sT
  1329. //----------------------------------------------------------
  1330. new SimpleTimeZone(2*ONE_HOUR, "Asia/Nicosia"/*EE%sT*/,
  1331. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1332. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1333. // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
  1334. // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
  1335. // Zone Asia/Nicosia Cyprus(CY) 2:00 EUAsia EE%sT
  1336. //----------------------------------------------------------
  1337. new SimpleTimeZone(2*ONE_HOUR, "Europe/Tallinn"/*EE%sT*/,
  1338. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1339. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1340. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1341. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1342. // Zone Europe/Tallinn Estonia(EE) 2:00 EU EE%sT
  1343. //----------------------------------------------------------
  1344. new SimpleTimeZone(2*ONE_HOUR, "Africa/Cairo"/*EE%sT*/,
  1345. Calendar.APRIL, 22, -Calendar.FRIDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  1346. Calendar.SEPTEMBER, -1, Calendar.THURSDAY /*DOW_IN_MON*/, 24*ONE_HOUR, 1*ONE_HOUR),
  1347. // Rule Egypt 1995 max - Apr Fri>=22 0:00s 1:00 S
  1348. // Rule Egypt 1995 max - Sep lastThu 23:00s 0 -
  1349. // Zone Africa/Cairo Egypt(EG) 2:00 Egypt EE%sT
  1350. new SimpleTimeZone(2*ONE_HOUR, "ART" /*alias for Africa/Cairo*/,
  1351. Calendar.APRIL, 22, -Calendar.FRIDAY /*DOW>=DOM*/, 0*ONE_HOUR,
  1352. Calendar.SEPTEMBER, -1, Calendar.THURSDAY /*DOW_IN_MON*/, 23*ONE_HOUR, 1*ONE_HOUR),
  1353. //----------------------------------------------------------
  1354. new SimpleTimeZone(2*ONE_HOUR, "Europe/Helsinki"/*EE%sT*/,
  1355. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1356. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1357. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1358. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1359. // Zone Europe/Helsinki Finland(FI) 2:00 EU EE%sT
  1360. //----------------------------------------------------------
  1361. new SimpleTimeZone(2*ONE_HOUR, "Europe/Athens"/*EE%sT*/,
  1362. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1363. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1364. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1365. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1366. // Zone Europe/Athens Greece(GR) 2:00 EU EE%sT
  1367. //----------------------------------------------------------
  1368. new SimpleTimeZone(2*ONE_HOUR, "Asia/Jerusalem"/*EE%sT*/,
  1369. Calendar.APRIL, 1, -Calendar.FRIDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1370. Calendar.SEPTEMBER, 1, -Calendar.FRIDAY /*DOW>=DOM*/, 2*ONE_HOUR, 1*ONE_HOUR),
  1371. // Rule Zion 2000 max - Apr Fri>=1 2:00 1:00 D
  1372. // Rule Zion 2000 max - Sep Fri>=1 2:00 0 S
  1373. // Zone Asia/Jerusalem Israel(IL) 2:00 Zion I%sT
  1374. //----------------------------------------------------------
  1375. new SimpleTimeZone(2*ONE_HOUR, "Asia/Amman"),
  1376. // Zone Asia/Amman 2:00 Jordan EE%sT
  1377. //----------------------------------------------------------
  1378. new SimpleTimeZone(2*ONE_HOUR, "Asia/Beirut" /*EE%sT*/,
  1379. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1380. Calendar.SEPTEMBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1381. // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
  1382. // Rule Lebanon 1993 max - Sep lastSun 0:00 0 -
  1383. // Asia/Beirut Lebanon(LB) 2:00 Lebanon EE%sT
  1384. //----------------------------------------------------------
  1385. new SimpleTimeZone(1*ONE_HOUR, "Europe/Vilnius" /*EE%sT*/,
  1386. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1387. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1388. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1389. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1390. // Zone Europe/Vilnius Lithuania(LT) 1:00 EU CE%sT
  1391. //----------------------------------------------------------
  1392. new SimpleTimeZone(2*ONE_HOUR, "Europe/Riga" /*EE%sT*/,
  1393. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1394. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1395. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1396. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1397. // Zone Europe/Riga Latvia(LV) 2:00 EU EE%sT
  1398. //----------------------------------------------------------
  1399. new SimpleTimeZone(2*ONE_HOUR, "Europe/Chisinau" /*EE%sT*/,
  1400. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1401. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1402. // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
  1403. // Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
  1404. // Europe/Chisinau Moldova(MD) 2:00 E-Eur EE%sT
  1405. //----------------------------------------------------------
  1406. new SimpleTimeZone(2*ONE_HOUR, "Europe/Bucharest" /*EE%sT*/,
  1407. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1408. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1409. // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
  1410. // Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
  1411. // Europe/Bucharest Romania(RO) 2:00 E-Eur EE%sT
  1412. //----------------------------------------------------------
  1413. new SimpleTimeZone(2*ONE_HOUR, "Europe/Kaliningrad" /*EE%sT*/,
  1414. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1415. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1416. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1417. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1418. // Europe/Kaliningrad Russia(RU) 2:00 Russia EE%sT
  1419. //----------------------------------------------------------
  1420. new SimpleTimeZone(2*ONE_HOUR, "Asia/Damascus" /*EE%sT*/,
  1421. Calendar.APRIL, 1, 0 /*DOM*/, 0*ONE_HOUR,
  1422. Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1423. // Rule Syria 1994 max - Apr 1 0:00 1:00 S
  1424. // Rule Syria 1994 max - Oct 1 0:00 0 -
  1425. // Asia/Damascus Syria(SY) 2:00 Syria EE%sT
  1426. //----------------------------------------------------------
  1427. new SimpleTimeZone(2*ONE_HOUR, "Europe/Kiev" /*EE%sT*/,
  1428. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1429. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1430. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1431. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1432. // Zone Europe/Kiev Ukraine(UA) 2:00 EU EE%sT
  1433. //----------------------------------------------------------
  1434. new SimpleTimeZone(2*ONE_HOUR, "Europe/Istanbul" /*EE%sT*/,
  1435. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1436. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1437. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1438. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1439. // Zone Europe/Istanbul Turkey(TR) 2:00 EU EE%sT
  1440. new SimpleTimeZone(2*ONE_HOUR, "EET" /*alias for Europe/Istanbul*/,
  1441. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1442. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1443. //----------------------------------------------------------
  1444. new SimpleTimeZone(3*ONE_HOUR, "Asia/Bahrain" /*AST*/),
  1445. // Asia/Bahrain Bahrain(BH) 3:00 - AST
  1446. //----------------------------------------------------------
  1447. new SimpleTimeZone(3*ONE_HOUR, "Africa/Djibouti" /*EAT*/),
  1448. // Africa/Djibouti Djibouti(DJ) 3:00 - EAT
  1449. //----------------------------------------------------------
  1450. new SimpleTimeZone(3*ONE_HOUR, "Africa/Asmera" /*EAT*/),
  1451. // Africa/Asmera Eritrea(ER) 3:00 - EAT
  1452. //----------------------------------------------------------
  1453. new SimpleTimeZone(3*ONE_HOUR, "Africa/Addis_Ababa" /*EAT*/),
  1454. // Africa/Addis_Ababa Ethiopia(ET) 3:00 - EAT
  1455. new SimpleTimeZone(3*ONE_HOUR, "EAT" /*alias for Africa/Addis_Ababa*/),
  1456. //----------------------------------------------------------
  1457. new SimpleTimeZone(3*ONE_HOUR, "Africa/Nairobi" /*EAT*/),
  1458. // Africa/Nairobi Kenya(KE) 3:00 - EAT
  1459. //----------------------------------------------------------
  1460. new SimpleTimeZone(3*ONE_HOUR, "Indian/Comoro" /*EAT*/),
  1461. // Indian/Comoro Comoros(KM) 3:00 - EAT
  1462. //----------------------------------------------------------
  1463. new SimpleTimeZone(3*ONE_HOUR, "Asia/Kuwait" /*AST*/),
  1464. // Asia/Kuwait Kuwait(KW) 3:00 - AST
  1465. //----------------------------------------------------------
  1466. new SimpleTimeZone(3*ONE_HOUR, "Indian/Antananarivo" /*EAT*/),
  1467. // Indian/Antananarivo Madagascar(MK) 3:00 - EAT
  1468. //----------------------------------------------------------
  1469. new SimpleTimeZone(3*ONE_HOUR, "Asia/Qatar" /*AST*/),
  1470. // Asia/Qatar Qatar(QA) 3:00 - AST
  1471. //----------------------------------------------------------
  1472. new SimpleTimeZone(3*ONE_HOUR, "Africa/Mogadishu" /*EAT*/),
  1473. // Africa/Mogadishu Somalia(SO) 3:00 - EAT
  1474. //----------------------------------------------------------
  1475. new SimpleTimeZone(3*ONE_HOUR, "Africa/Dar_es_Salaam" /*EAT*/),
  1476. // Africa/Dar_es_Salaam Tanzania(TZ) 3:00 - EAT
  1477. //----------------------------------------------------------
  1478. new SimpleTimeZone(3*ONE_HOUR, "Africa/Kampala" /*EAT*/),
  1479. // Africa/Kampala Uganda(UG) 3:00 - EAT
  1480. //----------------------------------------------------------
  1481. new SimpleTimeZone(3*ONE_HOUR, "Asia/Aden" /*AST*/),
  1482. // Asia/Aden Yemen(YE) 3:00 - AST
  1483. //----------------------------------------------------------
  1484. new SimpleTimeZone(3*ONE_HOUR, "Indian/Mayotte" /*EAT*/),
  1485. // Indian/Mayotte Mayotte(YT) 3:00 - EAT
  1486. //----------------------------------------------------------
  1487. new SimpleTimeZone(3*ONE_HOUR, "Asia/Riyadh" /*AST*/),
  1488. // Asia/Riyadh Saudi Arabia(SA) 3:00 - AST
  1489. //----------------------------------------------------------
  1490. new SimpleTimeZone(3*ONE_HOUR, "Asia/Baghdad" /*A%sT*/,
  1491. Calendar.APRIL, 1, 0 /*DOM*/, 3*ONE_HOUR,
  1492. Calendar.OCTOBER, 1, 0 /*DOM*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1493. // Rule Iraq 1991 max - Apr 1 3:00s 1:00 D
  1494. // Rule Iraq 1991 max - Oct 1 3:00s 0 D
  1495. // Asia/Baghdad Iraq(IQ) 3:00 Iraq A%sT
  1496. //----------------------------------------------------------
  1497. new SimpleTimeZone(2*ONE_HOUR, "Europe/Simferopol"/*MSK/MSD*/,
  1498. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR,
  1499. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 4*ONE_HOUR, 1*ONE_HOUR),
  1500. // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
  1501. // Rule EU 1996 max - Oct lastSun 1:00u 0 -
  1502. // Zone Europe/Simferopol Ukraine(UA) 2:00 EU EE%sT
  1503. //----------------------------------------------------------
  1504. new SimpleTimeZone(3*ONE_HOUR, "Europe/Moscow" /*MSK/MSD*/,
  1505. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1506. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1507. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1508. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1509. // Europe/Moscow Russia(RU) 3:00 Russia MSK/MSD
  1510. //----------------------------------------------------------
  1511. new SimpleTimeZone((int)(3.5*ONE_HOUR), "Asia/Tehran" /*IR%sT*/,
  1512. Calendar.MARCH, 20, 0 /*DOM*/, 0*ONE_HOUR,
  1513. Calendar.SEPTEMBER, 22, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1514. // Rule Iran 2000 only - Mar 20 0:00 1:00 S
  1515. // Rule Iran 2000 only - Sep 22 0:00 0 -
  1516. // Zone Asia/Tehran Iran(IR) 3:30 Iran IR%sT
  1517. new SimpleTimeZone((int)(3.5*ONE_HOUR), "MET" /*alias for Asia/Tehran*/,
  1518. Calendar.MARCH, 20, 0 /*DOM*/, 0*ONE_HOUR,
  1519. Calendar.SEPTEMBER, 22, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1520. //----------------------------------------------------------
  1521. new SimpleTimeZone(4*ONE_HOUR, "Asia/Dubai" /*GST*/),
  1522. // Asia/Dubai United Arab Emirates(AE) 4:00 - GST
  1523. //----------------------------------------------------------
  1524. new SimpleTimeZone(4*ONE_HOUR, "Indian/Mauritius" /*MUT*/),
  1525. // Indian/Mauritius Mauritius(MU) 4:00 - MUT # Mauritius Time
  1526. //----------------------------------------------------------
  1527. new SimpleTimeZone(4*ONE_HOUR, "Asia/Muscat" /*GST*/),
  1528. // Asia/Muscat Oman(OM) 4:00 - GST
  1529. //----------------------------------------------------------
  1530. new SimpleTimeZone(4*ONE_HOUR, "Indian/Reunion" /*RET*/),
  1531. // Indian/Reunion Reunion(RE) 4:00 - RET # Reunion Time
  1532. //----------------------------------------------------------
  1533. new SimpleTimeZone(4*ONE_HOUR, "Indian/Mahe" /*SCT*/),
  1534. // Indian/Mahe Seychelles(SC) 4:00 - SCT # Seychelles Time
  1535. //----------------------------------------------------------
  1536. new SimpleTimeZone(4*ONE_HOUR, "Asia/Yerevan",
  1537. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1538. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1539. // Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S
  1540. // Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 -
  1541. // Zone Asia/Yerevan Armenia(AM) 4:00 RussiaAsia AM%sT
  1542. new SimpleTimeZone(4*ONE_HOUR, "NET" /*alias for Asia/Yerevan*/),
  1543. //----------------------------------------------------------
  1544. new SimpleTimeZone(4*ONE_HOUR, "Asia/Baku",
  1545. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR,
  1546. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 1*ONE_HOUR, 1*ONE_HOUR),
  1547. // Rule Azer 1997 max - Mar lastSun 1:00 1:00 S
  1548. // Rule Azer 1997 max - Oct lastSun 1:00 0 -
  1549. // Zone Asia/Baku Azerbaijan(AZ) 4:00 Azer AZ%sT
  1550. //----------------------------------------------------------
  1551. new SimpleTimeZone(4*ONE_HOUR, "Asia/Aqtau" /*AQT%sT*/,
  1552. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1553. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1554. // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
  1555. // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
  1556. // Asia/Aqtau Kazakhstan(KZ) 4:00 E-EurAsia AQT%sT
  1557. //----------------------------------------------------------
  1558. new SimpleTimeZone(4*ONE_HOUR, "Europe/Samara" /*SAM%sT*/,
  1559. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1560. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1561. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1562. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1563. // Europe/Samara Russia(RU) 4:00 Russia SAM%sT
  1564. //----------------------------------------------------------
  1565. new SimpleTimeZone((int)(4.5*ONE_HOUR), "Asia/Kabul" /*AFT*/),
  1566. // Asia/Kabul Afghanistan(AF) 4:30 - AFT
  1567. //----------------------------------------------------------
  1568. new SimpleTimeZone(5*ONE_HOUR, "Indian/Kerguelen" /*TFT*/),
  1569. // Indian/Kerguelen France - year-round bases(FR) 5:00 - TFT # ISO code TF Time
  1570. //----------------------------------------------------------
  1571. new SimpleTimeZone(4*ONE_HOUR, "Asia/Tbilisi",
  1572. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR,
  1573. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1574. // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
  1575. // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
  1576. // Zone Asia/Tbilisi Georgia(GE) 4:00 E-EurAsia GE%sT
  1577. //----------------------------------------------------------
  1578. new SimpleTimeZone(5*ONE_HOUR, "Indian/Chagos" /*IOT*/),
  1579. // Indian/Chagos British Indian Ocean Territory(IO) 5:00 - IOT # BIOT Time
  1580. //----------------------------------------------------------
  1581. new SimpleTimeZone(5*ONE_HOUR, "Indian/Maldives" /*MVT*/),
  1582. // Indian/Maldives Maldives(MV) 5:00 - MVT # Maldives Time
  1583. //----------------------------------------------------------
  1584. new SimpleTimeZone(5*ONE_HOUR, "Asia/Dushanbe" /*TJT*/),
  1585. // Asia/Dushanbe Tajikistan(TJ) 5:00 - TJT # Tajikistan Time
  1586. //----------------------------------------------------------
  1587. new SimpleTimeZone(5*ONE_HOUR, "Asia/Ashkhabad" /*TMT*/),
  1588. // Asia/Ashkhabad Turkmenistan(TM) 5:00 - TMT # Turkmenistan Time
  1589. //----------------------------------------------------------
  1590. new SimpleTimeZone(5*ONE_HOUR, "Asia/Tashkent" /*UZT*/),
  1591. // Asia/Tashkent Uzbekistan(UZ) 5:00 - UZT # Uzbekistan Time
  1592. //----------------------------------------------------------
  1593. new SimpleTimeZone(5*ONE_HOUR, "Asia/Karachi" /*PKT*/),
  1594. // Asia/Karachi Pakistan(PK) 5:00 - PKT # Pakistan Time
  1595. new SimpleTimeZone(5*ONE_HOUR, "PLT" /*alias for Asia/Karachi*/),
  1596. //----------------------------------------------------------
  1597. new SimpleTimeZone(5*ONE_HOUR, "Asia/Bishkek" /*KG%sT*/,
  1598. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, (int)(2.5*ONE_HOUR),
  1599. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, (int)(2.5*ONE_HOUR), 1*ONE_HOUR),
  1600. // Rule Kirgiz 1997 max - Mar lastSun 2:30 1:00 S
  1601. // Rule Kirgiz 1997 max - Oct lastSun 2:30 0 -
  1602. // Zone Asia/Bishkek Kirgizstan(KG) 5:00 Kirgiz KG%sT
  1603. //----------------------------------------------------------
  1604. new SimpleTimeZone(5*ONE_HOUR, "Asia/Aqtobe" /*AQT%sT*/,
  1605. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1606. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1607. // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
  1608. // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
  1609. // Asia/Aqtobe Kazakhstan(KZ) 5:00 E-EurAsia AQT%sT
  1610. //----------------------------------------------------------
  1611. new SimpleTimeZone(5*ONE_HOUR, "Asia/Yekaterinburg" /*YEK%sT*/,
  1612. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1613. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1614. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1615. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1616. // Asia/Yekaterinburg Russia(RU) 5:00 Russia YEK%sT # Yekaterinburg Time
  1617. //----------------------------------------------------------
  1618. new SimpleTimeZone((int)(5.5*ONE_HOUR), "Asia/Calcutta" /*IST*/),
  1619. // Asia/Calcutta India(IN) 5:30 - IST
  1620. new SimpleTimeZone((int)(5.5*ONE_HOUR), "IST" /*alias for Asia/Calcutta*/),
  1621. //----------------------------------------------------------
  1622. new SimpleTimeZone((int)(5.75*ONE_HOUR), "Asia/Katmandu" /*NPT*/),
  1623. // Asia/Katmandu Nepal(NP) 5:45 - NPT # Nepal Time
  1624. //----------------------------------------------------------
  1625. new SimpleTimeZone(6*ONE_HOUR, "Antarctica/Mawson" /*MAWT*/),
  1626. // Antarctica/Mawson Australia - territories(AQ) 6:00 - MAWT # Mawson Time
  1627. //----------------------------------------------------------
  1628. new SimpleTimeZone(6*ONE_HOUR, "Asia/Thimbu" /*BTT*/),
  1629. // Asia/Thimbu Bhutan(BT) 6:00 - BTT # Bhutan Time
  1630. //----------------------------------------------------------
  1631. new SimpleTimeZone(6*ONE_HOUR, "Asia/Colombo" /*LKT*/),
  1632. // Asia/Colombo Sri Lanka(LK) 6:00 - LKT
  1633. //----------------------------------------------------------
  1634. new SimpleTimeZone(6*ONE_HOUR, "Asia/Dacca" /*BDT*/),
  1635. // Asia/Dacca Bangladesh(BD) 6:00 - BDT # Bangladesh Time
  1636. new SimpleTimeZone(6*ONE_HOUR, "BST" /*alias for Asia/Dacca*/),
  1637. //----------------------------------------------------------
  1638. new SimpleTimeZone(6*ONE_HOUR, "Asia/Almaty",
  1639. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR,
  1640. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1641. // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
  1642. // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
  1643. // Zone Asia/Almaty 6:00 E-EurAsia ALM%sT
  1644. //----------------------------------------------------------
  1645. new SimpleTimeZone(6*ONE_HOUR, "Asia/Novosibirsk" /*NOV%sT*/,
  1646. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1647. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1648. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1649. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1650. // Asia/Novosibirsk Russia(RU) 6:00 Russia NOV%sT
  1651. //----------------------------------------------------------
  1652. new SimpleTimeZone((int)(6.5*ONE_HOUR), "Indian/Cocos" /*CCT*/),
  1653. // Indian/Cocos Cocos(CC) 6:30 - CCT # Cocos Islands Time
  1654. //----------------------------------------------------------
  1655. new SimpleTimeZone((int)(6.5*ONE_HOUR), "Asia/Rangoon" /*MMT*/),
  1656. // Asia/Rangoon Burma / Myanmar(MM) 6:30 - MMT # Myanmar Time
  1657. //----------------------------------------------------------
  1658. new SimpleTimeZone(7*ONE_HOUR, "Indian/Christmas" /*CXT*/),
  1659. // Indian/Christmas Australian miscellany(AU) 7:00 - CXT # Christmas Island Time
  1660. //----------------------------------------------------------
  1661. new SimpleTimeZone(7*ONE_HOUR, "Asia/Jakarta" /*JAVT*/),
  1662. // Asia/Jakarta Indonesia(ID) 7:00 - JAVT
  1663. //----------------------------------------------------------
  1664. new SimpleTimeZone(7*ONE_HOUR, "Asia/Phnom_Penh" /*ICT*/),
  1665. // Asia/Phnom_Penh Cambodia(KH) 7:00 - ICT
  1666. //----------------------------------------------------------
  1667. new SimpleTimeZone(7*ONE_HOUR, "Asia/Vientiane" /*ICT*/),
  1668. // Asia/Vientiane Laos(LA) 7:00 - ICT
  1669. //----------------------------------------------------------
  1670. new SimpleTimeZone(7*ONE_HOUR, "Asia/Saigon" /*ICT*/),
  1671. // Asia/Saigon Vietnam(VN) 7:00 - ICT
  1672. new SimpleTimeZone(7*ONE_HOUR, "VST" /*alias for Asia/Saigon*/),
  1673. //----------------------------------------------------------
  1674. new SimpleTimeZone(7*ONE_HOUR, "Asia/Bangkok" /*ICT*/),
  1675. // Asia/Bangkok Thailand(TH) 7:00 - ICT
  1676. //----------------------------------------------------------
  1677. new SimpleTimeZone(7*ONE_HOUR, "Asia/Krasnoyarsk" /*KRA%sT*/,
  1678. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1679. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1680. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1681. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1682. // Asia/Krasnoyarsk Russia(RU) 7:00 Russia KRA%sT
  1683. //----------------------------------------------------------
  1684. new SimpleTimeZone(8*ONE_HOUR, "Antarctica/Casey" /*WST*/),
  1685. // Antarctica/Casey Australia - territories(AQ) 8:00 - WST # Western (Aus) Standard Time
  1686. //----------------------------------------------------------
  1687. new SimpleTimeZone(8*ONE_HOUR, "Australia/Perth" /*WST*/),
  1688. // Australia/Perth Australia(AU) 8:00 - WST
  1689. //----------------------------------------------------------
  1690. new SimpleTimeZone(8*ONE_HOUR, "Asia/Brunei" /*BNT*/),
  1691. // Asia/Brunei Brunei(BN) 8:00 - BNT
  1692. //----------------------------------------------------------
  1693. new SimpleTimeZone(8*ONE_HOUR, "Asia/Hong_Kong" /*C%sT*/),
  1694. // Asia/Hong_Kong China(HK) 8:00 - C%sT
  1695. //----------------------------------------------------------
  1696. new SimpleTimeZone(8*ONE_HOUR, "Asia/Ujung_Pandang" /*BORT*/),
  1697. // Asia/Ujung_Pandang Indonesia(ID) 8:00 - BORT
  1698. //----------------------------------------------------------
  1699. new SimpleTimeZone(8*ONE_HOUR, "Asia/Macao" /*C%sT*/),
  1700. // Asia/Macao Macao(MO) 8:00 - C%sT
  1701. //----------------------------------------------------------
  1702. new SimpleTimeZone(8*ONE_HOUR, "Asia/Kuala_Lumpur" /*MYT*/),
  1703. // Asia/Kuala_Lumpur Malaysia(MY) 8:00 - MYT # Malaysia Time
  1704. //----------------------------------------------------------
  1705. new SimpleTimeZone(8*ONE_HOUR, "Asia/Manila" /*PH%sT*/),
  1706. // Asia/Manila Philippines(PH) 8:00 - PH%sT
  1707. //----------------------------------------------------------
  1708. new SimpleTimeZone(8*ONE_HOUR, "Asia/Singapore" /*SGT*/),
  1709. // Asia/Singapore Singapore(SG) 8:00 - SGT
  1710. //----------------------------------------------------------
  1711. new SimpleTimeZone(8*ONE_HOUR, "Asia/Taipei" /*C%sT*/),
  1712. // Asia/Taipei Taiwan(TW) 8:00 - C%sT
  1713. //----------------------------------------------------------
  1714. new SimpleTimeZone(8*ONE_HOUR, "Asia/Shanghai" /*C%sT*/),
  1715. // Asia/Shanghai China(CN) 8:00 - C%sT
  1716. new SimpleTimeZone(8*ONE_HOUR, "CTT" /*alias for Asia/Shanghai*/),
  1717. //----------------------------------------------------------
  1718. new SimpleTimeZone(8*ONE_HOUR, "Asia/Ulan_Bator" /*ULA%sT*/,
  1719. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR,
  1720. Calendar.SEPTEMBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
  1721. // Rule Mongol 1991 max - Mar lastSun 0:00 1:00 S
  1722. // Rule Mongol 1997 max - Sep lastSun 0:00 0 -
  1723. // Asia/Ulan_Bator Mongolia(MN) 8:00 Mongol ULA%sT
  1724. //----------------------------------------------------------
  1725. new SimpleTimeZone(8*ONE_HOUR, "Asia/Irkutsk" /*IRK%sT*/,
  1726. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1727. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1728. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1729. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1730. // Asia/Irkutsk Russia(RU) 8:00 Russia IRK%sT
  1731. //----------------------------------------------------------
  1732. new SimpleTimeZone(9*ONE_HOUR, "Asia/Jayapura" /*JAYT*/),
  1733. // Asia/Jayapura Indonesia(ID) 9:00 - JAYT
  1734. //----------------------------------------------------------
  1735. new SimpleTimeZone(9*ONE_HOUR, "Asia/Pyongyang" /*KST*/),
  1736. // Asia/Pyongyang ?(KP) 9:00 - KST
  1737. //----------------------------------------------------------
  1738. new SimpleTimeZone(9*ONE_HOUR, "Asia/Seoul" /*K%sT*/),
  1739. // Asia/Seoul ?(KR) 9:00 - K%sT
  1740. //----------------------------------------------------------
  1741. new SimpleTimeZone(9*ONE_HOUR, "Pacific/Palau" /*PWT*/),
  1742. // Pacific/Palau Palau(PW) 9:00 - PWT # Palau Time
  1743. //----------------------------------------------------------
  1744. new SimpleTimeZone(9*ONE_HOUR, "Asia/Tokyo" /*JST*/),
  1745. // Asia/Tokyo Japan(JP) 9:00 - JST
  1746. new SimpleTimeZone(9*ONE_HOUR, "JST" /*alias for Asia/Tokyo*/),
  1747. //----------------------------------------------------------
  1748. new SimpleTimeZone(9*ONE_HOUR, "Asia/Yakutsk" /*YAK%sT*/,
  1749. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1750. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1751. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1752. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1753. // Asia/Yakutsk Russia(RU) 9:00 Russia YAK%sT
  1754. //----------------------------------------------------------
  1755. new SimpleTimeZone((int)(9.5*ONE_HOUR), "Australia/Darwin" /*CST*/),
  1756. // Australia/Darwin Australia(AU) 9:30 - CST
  1757. new SimpleTimeZone((int)(9.5*ONE_HOUR), "ACT" /*alias for Australia/Darwin*/),
  1758. //----------------------------------------------------------
  1759. new SimpleTimeZone((int)(9.5*ONE_HOUR), "Australia/Adelaide" /*CST*/,
  1760. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1761. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1762. // Rule AS 1987 max - Oct lastSun 2:00s 1:00 -
  1763. // Rule AS 1995 max - Mar lastSun 2:00s 0 -
  1764. // Zone Australia/Adelaide 9:30 AS CST
  1765. //----------------------------------------------------------
  1766. new SimpleTimeZone((int)(9.5*ONE_HOUR), "Australia/Broken_Hill",
  1767. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1768. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1769. // Rule AS 1987 max - Oct lastSun 2:00s 1:00 -
  1770. // Rule AS 1995 max - Mar lastSun 2:00s 0 -
  1771. // Zone Australia/Broken_Hill 9:30 AS CST
  1772. //----------------------------------------------------------
  1773. new SimpleTimeZone(10*ONE_HOUR, "Australia/Hobart",
  1774. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1775. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1776. // Rule AT 1991 max - Oct Sun>=1 2:00s 1:00 -
  1777. // Rule AT 1991 max - Mar lastSun 2:00s 0 -
  1778. // Australia/Hobart 10:00 AT EST
  1779. //----------------------------------------------------------
  1780. new SimpleTimeZone(10*ONE_HOUR, "Antarctica/DumontDUrville" /*DDUT*/),
  1781. // Antarctica/DumontDUrville France - year-round bases(AQ) 10:00 - DDUT # Dumont-d'Urville Time
  1782. //----------------------------------------------------------
  1783. new SimpleTimeZone(10*ONE_HOUR, "Pacific/Truk" /*TRUT*/),
  1784. // Pacific/Truk Micronesia(FM) 10:00 - TRUT # Truk Time
  1785. //----------------------------------------------------------
  1786. new SimpleTimeZone(10*ONE_HOUR, "Pacific/Guam" /*GST*/),
  1787. // Pacific/Guam Guam(GU) 10:00 - GST
  1788. //----------------------------------------------------------
  1789. new SimpleTimeZone(10*ONE_HOUR, "Pacific/Saipan" /*MPT*/),
  1790. // Pacific/Saipan N Mariana Is(MP) 10:00 - MPT
  1791. //----------------------------------------------------------
  1792. new SimpleTimeZone(10*ONE_HOUR, "Pacific/Port_Moresby" /*PGT*/),
  1793. // Pacific/Port_Moresby Papua New Guinea(PG) 10:00 - PGT # Papua New Guinea Time
  1794. //----------------------------------------------------------
  1795. new SimpleTimeZone(10*ONE_HOUR, "Australia/Brisbane" /*EST*/),
  1796. // Australia/Brisbane Australia(AU) 10:00 - EST
  1797. //----------------------------------------------------------
  1798. new SimpleTimeZone(10*ONE_HOUR, "Asia/Vladivostok" /*VLA%sT*/,
  1799. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1800. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1801. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1802. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1803. // Asia/Vladivostok Russia(RU) 10:00 Russia VLA%sT
  1804. //----------------------------------------------------------
  1805. new SimpleTimeZone(10*ONE_HOUR, "Australia/Sydney" /*EST*/,
  1806. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1807. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1808. // Rule AN 2001 max - Oct lastSun 2:00s 1:00 -
  1809. // Rule AN 1996 max - Mar lastSun 2:00s 0 -
  1810. // Zone Australia/Sydney 10:00 AN EST
  1811. //----------------------------------------------------------
  1812. new SimpleTimeZone(10*ONE_HOUR, "AET" /*alias for Australia/Sydney*/ /*LHST*/,
  1813. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOM*/, 2*ONE_HOUR,
  1814. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1815. // Rule AN 2001 max - Oct lastSun 2:00s 1:00 -
  1816. // Rule AN 1996 max - Mar lastSun 2:00s 0 -
  1817. // Zone AET 10:00 AN EST
  1818. //----------------------------------------------------------
  1819. new SimpleTimeZone((int)(10.5*ONE_HOUR), "Australia/Lord_Howe",
  1820. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 2*ONE_HOUR,
  1821. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_MON*/, (int)(2.5*ONE_HOUR), (int)(0.5*ONE_HOUR)),
  1822. // Rule LH 1987 max - Oct lastSun 2:00s 0:30 -
  1823. // Rule LH 1996 max - Mar lastSun 2:00s 0 -
  1824. // Zone Australia/Lord_Howe Lord Howe Island(AU) 10:30 LH LHST
  1825. //----------------------------------------------------------
  1826. new SimpleTimeZone(11*ONE_HOUR, "Pacific/Ponape" /*PONT*/),
  1827. // Pacific/Ponape Micronesia(FM) 11:00 - PONT # Ponape Time
  1828. //----------------------------------------------------------
  1829. new SimpleTimeZone(11*ONE_HOUR, "Pacific/Efate" /*VU%sT*/),
  1830. // Pacific/Efate Vanuatu(VU) 11:00 - VU%sT # Vanuatu Time
  1831. //----------------------------------------------------------
  1832. new SimpleTimeZone(11*ONE_HOUR, "Pacific/Guadalcanal" /*SBT*/),
  1833. // Pacific/Guadalcanal Solomon Is(SB) 11:00 - SBT # Solomon Is Time
  1834. new SimpleTimeZone(11*ONE_HOUR, "SST" /*alias for Pacific/Guadalcanal*/),
  1835. //----------------------------------------------------------
  1836. new SimpleTimeZone(11*ONE_HOUR, "Pacific/Noumea"),
  1837. // Zone Pacific/Noumea New Caledonia(NC) 11:00 NC NC%sT
  1838. //----------------------------------------------------------
  1839. new SimpleTimeZone(11*ONE_HOUR, "Asia/Magadan" /*MAG%sT*/,
  1840. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1841. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1842. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1843. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1844. // Asia/Magadan Russia(RU) 11:00 Russia MAG%sT
  1845. //----------------------------------------------------------
  1846. new SimpleTimeZone((int)(11.5*ONE_HOUR), "Pacific/Norfolk" /*NFT*/),
  1847. // Pacific/Norfolk Norfolk(NF) 11:30 - NFT # Norfolk Time
  1848. //----------------------------------------------------------
  1849. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Kosrae" /*KOST*/),
  1850. // Pacific/Kosrae Micronesia(FM) 12:00 - KOST # Kosrae Time
  1851. //----------------------------------------------------------
  1852. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Tarawa" /*GILT*/),
  1853. // Pacific/Tarawa Kiribati(KI) 12:00 - GILT # Gilbert Is Time
  1854. //----------------------------------------------------------
  1855. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Majuro" /*MHT*/),
  1856. // Pacific/Majuro Marshall Is(MH) 12:00 - MHT
  1857. //----------------------------------------------------------
  1858. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Nauru" /*NRT*/),
  1859. // Pacific/Nauru Nauru(NR) 12:00 - NRT
  1860. //----------------------------------------------------------
  1861. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Funafuti" /*TVT*/),
  1862. // Pacific/Funafuti Tuvalu(TV) 12:00 - TVT # Tuvalu Time
  1863. //----------------------------------------------------------
  1864. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Wake" /*WAKT*/),
  1865. // Pacific/Wake Wake(US) 12:00 - WAKT # Wake Time
  1866. //----------------------------------------------------------
  1867. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Wallis" /*WFT*/),
  1868. // Pacific/Wallis Wallis and Futuna(WF) 12:00 - WFT # Wallis & Futuna Time
  1869. //----------------------------------------------------------
  1870. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Fiji",
  1871. Calendar.NOVEMBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1872. Calendar.FEBRUARY, -1, Calendar.SUNDAY /*DOW_IN_MON*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1873. // Rule Fiji 1998 max - Nov Sun>=1 2:00 1:00 S
  1874. // Rule Fiji 1999 max - Feb lastSun 3:00 0 -
  1875. // Zone Pacific/Fiji Fiji(FJ) 12:00 Fiji FJ%sT
  1876. //----------------------------------------------------------
  1877. new SimpleTimeZone(12*ONE_HOUR, "Antarctica/McMurdo" /*NZ%sT*/,
  1878. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1879. Calendar.MARCH, 15, -Calendar.SUNDAY /*DOW>=DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1880. // Rule NZAQ 1990 max - Oct Sun>=1 2:00s 1:00 D
  1881. // Rule NZAQ 1990 max - Mar Sun>=15 2:00s 0 S
  1882. // Antarctica/McMurdo USA - year-round bases(AQ) 12:00 NZAQ NZ%sT
  1883. //----------------------------------------------------------
  1884. new SimpleTimeZone(12*ONE_HOUR, "Asia/Kamchatka" /*PET%sT*/,
  1885. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1886. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1887. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1888. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1889. // Asia/Kamchatka Russia(RU) 12:00 Russia PET%sT
  1890. //----------------------------------------------------------
  1891. new SimpleTimeZone(12*ONE_HOUR, "Pacific/Auckland" /*NZ%sT*/,
  1892. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1893. Calendar.MARCH, 15, -Calendar.SUNDAY /*DOW>=DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1894. // Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
  1895. // Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
  1896. // Pacific/Auckland New Zealand(NZ) 12:00 NZ NZ%sT
  1897. new SimpleTimeZone(12*ONE_HOUR, "NST" /*alias for Pacific/Auckland*/,
  1898. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, 2*ONE_HOUR,
  1899. Calendar.MARCH, 15, -Calendar.SUNDAY /*DOW>=DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1900. //----------------------------------------------------------
  1901. new SimpleTimeZone((int)(12.75*ONE_HOUR), "Pacific/Chatham" /*CHA%sT*/,
  1902. Calendar.OCTOBER, 1, -Calendar.SUNDAY /*DOW>=DOM*/, (int)(2.75*ONE_HOUR),
  1903. Calendar.MARCH, 15, -Calendar.SUNDAY /*DOW>=DOM*/, (int)(3.75*ONE_HOUR), 1*ONE_HOUR),
  1904. // Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
  1905. // Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
  1906. // Pacific/Chatham New Zealand(NZ) 12:45 Chatham CHA%sT
  1907. //----------------------------------------------------------
  1908. new SimpleTimeZone(13*ONE_HOUR, "Pacific/Enderbury" /*PHOT*/),
  1909. // Pacific/Enderbury Kiribati(KI) 13:00 - PHOT
  1910. //----------------------------------------------------------
  1911. new SimpleTimeZone(13*ONE_HOUR, "Pacific/Tongatapu" /*TOT*/),
  1912. // Pacific/Tongatapu Tonga(TO) 13:00 - TOT
  1913. //----------------------------------------------------------
  1914. new SimpleTimeZone(13*ONE_HOUR, "Asia/Anadyr" /*ANA%sT*/,
  1915. Calendar.MARCH, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 2*ONE_HOUR,
  1916. Calendar.OCTOBER, -1, Calendar.SUNDAY /*DOW_IN_DOM*/, 3*ONE_HOUR, 1*ONE_HOUR),
  1917. // Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
  1918. // Rule Russia 1996 max - Oct lastSun 2:00s 0 -
  1919. // Asia/Anadyr Russia(RU) 13:00 Russia ANA%sT
  1920. //----------------------------------------------------------
  1921. new SimpleTimeZone(14*ONE_HOUR, "Pacific/Kiritimati" /*LINT*/),
  1922. // Pacific/Kiritimati Kiribati(KI) 14:00 - LINT
  1923. };
  1924. // ---------------- END GENERATED DATA ----------------
  1925. private static Hashtable lookup = new Hashtable(zones.length);
  1926. static {
  1927. for (int i=0; i < zones.length; ++i)
  1928. lookup.put(zones[i].getID(), zones[i]);
  1929. TimeZone.getDefault(); // to cache default system time zone
  1930. }
  1931. }
  1932. //eof