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