home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / text / SimpleDateFormat.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  8.8 KB  |  665 lines

  1. package java.text;
  2.  
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. import java.util.Locale;
  6. import java.util.ResourceBundle;
  7. import java.util.SimpleTimeZone;
  8. import java.util.TimeZone;
  9.  
  10. public class SimpleDateFormat extends DateFormat {
  11.    private String pattern;
  12.    private DateFormatSymbols formatData;
  13.    private static final int millisPerHour = 3600000;
  14.    private static final int millisPerMinute = 60000;
  15.    private static final String GMT_PLUS = "GMT+";
  16.    private static final String GMT_MINUS = "GMT-";
  17.    private static final String GMT = "GMT";
  18.  
  19.    public SimpleDateFormat() {
  20.       this(3, 7, Locale.getDefault());
  21.    }
  22.  
  23.    public SimpleDateFormat(String var1) {
  24.       this.pattern = var1;
  25.       this.formatData = new DateFormatSymbols();
  26.       this.initialize(Locale.getDefault());
  27.    }
  28.  
  29.    public SimpleDateFormat(String var1, Locale var2) {
  30.       this.pattern = var1;
  31.       this.formatData = new DateFormatSymbols(var2);
  32.       this.initialize(var2);
  33.    }
  34.  
  35.    public SimpleDateFormat(String var1, DateFormatSymbols var2) {
  36.       this.pattern = var1;
  37.       this.formatData = var2;
  38.       this.initialize(Locale.getDefault());
  39.    }
  40.  
  41.    SimpleDateFormat(int var1, int var2, Locale var3) {
  42.       ResourceBundle var4 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var3);
  43.       this.formatData = new DateFormatSymbols(var3);
  44.       String[] var5 = var4.getStringArray("DateTimePatterns");
  45.       if (var1 >= 0 && var2 >= 0) {
  46.          Object[] var6 = new Object[]{var5[var1], var5[var2]};
  47.          this.pattern = MessageFormat.format(var5[8], var6);
  48.       } else if (var1 >= 0) {
  49.          this.pattern = var5[var1];
  50.       } else {
  51.          if (var2 < 0) {
  52.             throw new IllegalArgumentException("No date or time style specified");
  53.          }
  54.  
  55.          this.pattern = var5[var2];
  56.       }
  57.  
  58.       this.initialize(var3);
  59.    }
  60.  
  61.    private void initialize(Locale var1) {
  62.       super.calendar = Calendar.getInstance((SimpleTimeZone)TimeZone.getTimeZone(this.formatData.zoneStrings[0][0]), var1);
  63.       super.numberFormat = NumberFormat.getInstance(var1);
  64.       super.numberFormat.setGroupingUsed(false);
  65.       if (super.numberFormat instanceof DecimalFormat) {
  66.          ((DecimalFormat)super.numberFormat).setDecimalSeparatorAlwaysShown(false);
  67.       }
  68.  
  69.       super.numberFormat.setParseIntegerOnly(true);
  70.    }
  71.  
  72.    public StringBuffer format(Date var1, StringBuffer var2, FieldPosition var3) {
  73.       var3.beginIndex = var3.endIndex = 0;
  74.       super.calendar.setTime(var1);
  75.       boolean var4 = false;
  76.       char var5 = 0;
  77.       int var6 = 0;
  78.  
  79.       for(int var7 = 0; var7 < this.pattern.length(); ++var7) {
  80.          char var8 = this.pattern.charAt(var7);
  81.          if (var4) {
  82.             if (var8 == '\'') {
  83.                var4 = false;
  84.                if (var6 == 0) {
  85.                   var2.append(var8);
  86.                } else {
  87.                   var6 = 0;
  88.                }
  89.             } else {
  90.                var2.append(var8);
  91.                ++var6;
  92.             }
  93.          } else if (var8 == '\'') {
  94.             var4 = true;
  95.             if (var6 > 0) {
  96.                var2.append(this.subFormat(var5, var6, var2.length(), var3));
  97.                var6 = 0;
  98.                var5 = 0;
  99.             }
  100.          } else if (var8 >= 'a' && var8 <= 'z' || var8 >= 'A' && var8 <= 'Z') {
  101.             if (var8 != var5 && var6 > 0) {
  102.                var2.append(this.subFormat(var5, var6, var2.length(), var3));
  103.                var5 = var8;
  104.                var6 = 1;
  105.             } else {
  106.                if (var8 != var5) {
  107.                   var5 = var8;
  108.                }
  109.  
  110.                ++var6;
  111.             }
  112.          } else if (var6 > 0) {
  113.             var2.append(this.subFormat(var5, var6, var2.length(), var3));
  114.             var2.append(var8);
  115.             var5 = 0;
  116.             var6 = 0;
  117.          } else {
  118.             var2.append(var8);
  119.          }
  120.       }
  121.  
  122.       if (var6 > 0) {
  123.          var2.append(this.subFormat(var5, var6, var2.length(), var3));
  124.       }
  125.  
  126.       return var2;
  127.    }
  128.  
  129.    private String subFormat(char var1, int var2, int var3, FieldPosition var4) throws IllegalArgumentException {
  130.       int var5 = 0;
  131.       int var6 = -1;
  132.       String var7 = "";
  133.       if ((var6 = "GyMdkHmsSEDFwWahKz".indexOf(var1)) == -1) {
  134.          throw new IllegalArgumentException("Illegal pattern character '" + var1 + "'");
  135.       } else {
  136.          switch (var6) {
  137.             case 0:
  138.                var5 = super.calendar.get(0);
  139.                var7 = this.formatData.eras[var5];
  140.                break;
  141.             case 1:
  142.                var5 = super.calendar.get(1);
  143.                if (var2 >= 4) {
  144.                   var7 = this.zeroPaddingNumber((long)var5, 4, 10);
  145.                } else {
  146.                   var7 = this.zeroPaddingNumber((long)var5, 2, 2);
  147.                }
  148.                break;
  149.             case 2:
  150.                var5 = super.calendar.get(2);
  151.                if (var2 >= 4) {
  152.                   var7 = this.formatData.months[var5];
  153.                } else if (var2 == 3) {
  154.                   var7 = this.formatData.shortMonths[var5];
  155.                } else {
  156.                   var7 = this.zeroPaddingNumber((long)(var5 + 1), var2, 10);
  157.                }
  158.                break;
  159.             case 3:
  160.                var5 = super.calendar.get(5);
  161.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  162.                break;
  163.             case 4:
  164.                if ((var5 = super.calendar.get(11)) == 0) {
  165.                   var7 = this.zeroPaddingNumber((long)(super.calendar.getMaximum(11) + 1), var2, 10);
  166.                } else {
  167.                   var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  168.                }
  169.                break;
  170.             case 5:
  171.                var5 = super.calendar.get(11);
  172.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  173.                break;
  174.             case 6:
  175.                var5 = super.calendar.get(12);
  176.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  177.                break;
  178.             case 7:
  179.                var5 = super.calendar.get(13);
  180.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  181.                break;
  182.             case 8:
  183.                var5 = super.calendar.get(14);
  184.                if (var2 > 3) {
  185.                   var2 = 3;
  186.                } else if (var2 == 2) {
  187.                   var5 /= 10;
  188.                } else if (var2 == 1) {
  189.                   var5 /= 100;
  190.                }
  191.  
  192.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  193.                break;
  194.             case 9:
  195.                var5 = super.calendar.get(7);
  196.                if (var2 >= 4) {
  197.                   var7 = this.formatData.weekdays[var5];
  198.                } else {
  199.                   var7 = this.formatData.shortWeekdays[var5];
  200.                }
  201.                break;
  202.             case 10:
  203.                var5 = super.calendar.get(6);
  204.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  205.                break;
  206.             case 11:
  207.                var5 = super.calendar.get(8);
  208.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  209.                break;
  210.             case 12:
  211.                var5 = super.calendar.get(3);
  212.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  213.                break;
  214.             case 13:
  215.                var5 = super.calendar.get(4);
  216.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  217.                break;
  218.             case 14:
  219.                var5 = super.calendar.get(9);
  220.                var7 = this.formatData.ampms[var5];
  221.                break;
  222.             case 15:
  223.                if ((var5 = super.calendar.get(10)) == 0) {
  224.                   var7 = this.zeroPaddingNumber((long)(super.calendar.getLeastMaximum(10) + 1), var2, 10);
  225.                } else {
  226.                   var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  227.                }
  228.                break;
  229.             case 16:
  230.                var5 = super.calendar.get(10);
  231.                var7 = this.zeroPaddingNumber((long)var5, var2, 10);
  232.                break;
  233.             case 17:
  234.                int var8 = this.formatData.getZoneIndex(super.calendar.getTimeZone().getID());
  235.                if (var8 == -1) {
  236.                   StringBuffer var9 = new StringBuffer();
  237.                   var5 = super.calendar.get(15) + super.calendar.get(16);
  238.                   if (var5 < 0) {
  239.                      var9.append("GMT-");
  240.                      var5 = -var5;
  241.                   } else {
  242.                      var9.append("GMT+");
  243.                   }
  244.  
  245.                   var9.append(this.zeroPaddingNumber((long)(var5 / 3600000), 2, 2));
  246.                   var9.append(':');
  247.                   var9.append(this.zeroPaddingNumber((long)(var5 % 3600000 / '\uea60'), 2, 2));
  248.                   var7 = var9.toString();
  249.                } else if (super.calendar.get(16) != 0) {
  250.                   if (var2 >= 4) {
  251.                      var7 = this.formatData.zoneStrings[var8][3];
  252.                   } else {
  253.                      var7 = this.formatData.zoneStrings[var8][4];
  254.                   }
  255.                } else if (var2 >= 4) {
  256.                   var7 = this.formatData.zoneStrings[var8][1];
  257.                } else {
  258.                   var7 = this.formatData.zoneStrings[var8][2];
  259.                }
  260.          }
  261.  
  262.          if (var4.field == var6 && var4.beginIndex == 0 && var4.endIndex == 0) {
  263.             var4.beginIndex = var3;
  264.             var4.endIndex = var3 + var7.length();
  265.          }
  266.  
  267.          return var7;
  268.       }
  269.    }
  270.  
  271.    private String zeroPaddingNumber(long var1, int var3, int var4) {
  272.       super.numberFormat.setMinimumIntegerDigits(var3);
  273.       super.numberFormat.setMaximumIntegerDigits(var4);
  274.       return super.numberFormat.format(var1);
  275.    }
  276.  
  277.    public Date parse(String var1, ParsePosition var2) {
  278.       int var10 = var2.index;
  279.       int var4 = var10;
  280.       super.calendar.clear();
  281.       boolean var5 = false;
  282.       char var6 = 0;
  283.       int var7 = 0;
  284.  
  285.       for(int var8 = 0; var8 < this.pattern.length(); ++var8) {
  286.          char var9 = this.pattern.charAt(var8);
  287.          if (var5) {
  288.             if (var9 == '\'') {
  289.                var5 = false;
  290.                if (var6 == '\'') {
  291.                   ++var10;
  292.                }
  293.             } else {
  294.                if (var9 != var1.charAt(var10)) {
  295.                   var2.index = var4;
  296.                   return null;
  297.                }
  298.  
  299.                ++var10;
  300.                var6 = var9;
  301.             }
  302.          } else if (var9 == '\'') {
  303.             var5 = true;
  304.             if (var7 > 0) {
  305.                if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  306.                   var2.index = var4;
  307.                   return null;
  308.                }
  309.  
  310.                var7 = 0;
  311.             }
  312.  
  313.             var6 = var9;
  314.          } else if (var9 >= 'a' && var9 <= 'z' || var9 >= 'A' && var9 <= 'Z') {
  315.             if (var9 != var6 && var7 > 0) {
  316.                if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  317.                   var2.index = var4;
  318.                   return null;
  319.                }
  320.  
  321.                var6 = var9;
  322.                var7 = 1;
  323.             } else {
  324.                if (var9 != var6) {
  325.                   var6 = var9;
  326.                }
  327.  
  328.                ++var7;
  329.             }
  330.          } else if (var7 > 0) {
  331.             if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  332.                var2.index = var4;
  333.                return null;
  334.             }
  335.  
  336.             if (var9 != var1.charAt(var10)) {
  337.                var2.index = var4;
  338.                return null;
  339.             }
  340.  
  341.             ++var10;
  342.             var7 = 0;
  343.             var6 = 0;
  344.          } else {
  345.             if (var9 != var1.charAt(var10)) {
  346.                var2.index = var4;
  347.                return null;
  348.             }
  349.  
  350.             ++var10;
  351.          }
  352.       }
  353.  
  354.       if (var7 > 0 && (var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  355.          var2.index = var4;
  356.          return null;
  357.       } else {
  358.          var2.index = var10;
  359.          if (!super.calendar.isSet(1)) {
  360.             super.calendar.set(1, 1970);
  361.          }
  362.  
  363.          if (!super.calendar.isSet(2)) {
  364.             super.calendar.set(2, 0);
  365.          }
  366.  
  367.          if (!super.calendar.isSet(5)) {
  368.             super.calendar.set(5, 1);
  369.          }
  370.  
  371.          if (!super.calendar.isSet(11) && !super.calendar.isSet(10)) {
  372.             super.calendar.set(11, 0);
  373.          }
  374.  
  375.          if (!super.calendar.isSet(12)) {
  376.             super.calendar.set(12, 0);
  377.          }
  378.  
  379.          if (!super.calendar.isSet(13)) {
  380.             super.calendar.set(13, 0);
  381.          }
  382.  
  383.          if (!super.calendar.isSet(14)) {
  384.             super.calendar.set(14, 0);
  385.          }
  386.  
  387.          if (!super.calendar.isSet(0)) {
  388.             super.calendar.set(0, 1);
  389.          }
  390.  
  391.          return super.calendar.getTime();
  392.       }
  393.    }
  394.  
  395.    private int matchString(String var1, int var2, int var3, String[] var4) {
  396.       int var5 = 0;
  397.       int var6 = var4.length;
  398.       if (var3 == 7) {
  399.          var5 = 1;
  400.       }
  401.  
  402.       while(var5 < var6 && (var4[var5].length() == 0 || !var1.regionMatches(true, var2, var4[var5], 0, var4[var5].length()))) {
  403.          ++var5;
  404.       }
  405.  
  406.       if (var5 < var6) {
  407.          super.calendar.set(var3, var5);
  408.          return var2 + var4[var5].length();
  409.       } else {
  410.          return -var2;
  411.       }
  412.    }
  413.  
  414.    private int subParse(String var1, int var2, char var3, int var4) {
  415.       int var5 = 0;
  416.       ParsePosition var7 = new ParsePosition(0);
  417.       int var8 = -1;
  418.       if ((var8 = "GyMdkHmsSEDFwWahKz".indexOf(var3)) == -1) {
  419.          return -var2;
  420.       } else {
  421.          var7.index = var2;
  422.          switch (var8) {
  423.             case 0:
  424.                return this.matchString(var1, var2, 0, this.formatData.eras);
  425.             case 1:
  426.                if (var4 >= 4) {
  427.                   var5 = (int)Integer.valueOf(var1.substring(var2, var2 + var4)).longValue();
  428.                   super.calendar.set(1, var5);
  429.                } else {
  430.                   var5 = (int)Integer.valueOf(var1.substring(var2, var2 + 2)).longValue();
  431.                   super.calendar.set(1, var5 + 1900);
  432.                }
  433.  
  434.                return var2 + var4;
  435.             case 2:
  436.                if (var4 <= 2) {
  437.                   super.calendar.set(2, super.numberFormat.parse(var1, var7).intValue() - 1);
  438.                   return var7.index;
  439.                } else {
  440.                   int var24 = 0;
  441.                   if ((var24 = this.matchString(var1, var2, 2, this.formatData.months)) > 0) {
  442.                      return var24;
  443.                   }
  444.  
  445.                   return this.matchString(var1, var2, 2, this.formatData.shortMonths);
  446.                }
  447.             case 3:
  448.                super.calendar.set(5, super.numberFormat.parse(var1, var7).intValue());
  449.                return var7.index;
  450.             case 4:
  451.                var5 = super.numberFormat.parse(var1, var7).intValue();
  452.                if (var5 == super.calendar.getMaximum(11) + 1) {
  453.                   super.calendar.set(11, 0);
  454.                } else {
  455.                   super.calendar.set(11, var5);
  456.                }
  457.  
  458.                return var7.index;
  459.             case 5:
  460.                super.calendar.set(11, super.numberFormat.parse(var1, var7).intValue());
  461.                return var7.index;
  462.             case 6:
  463.                super.calendar.set(12, super.numberFormat.parse(var1, var7).intValue());
  464.                return var7.index;
  465.             case 7:
  466.                super.calendar.set(13, super.numberFormat.parse(var1, var7).intValue());
  467.                return var7.index;
  468.             case 8:
  469.                super.calendar.set(14, super.numberFormat.parse(var1, var7).intValue());
  470.                return var7.index;
  471.             case 9:
  472.                int var22 = 0;
  473.                if ((var22 = this.matchString(var1, var2, 7, this.formatData.weekdays)) > 0) {
  474.                   return var22;
  475.                }
  476.  
  477.                return this.matchString(var1, var2, 7, this.formatData.shortWeekdays);
  478.             case 10:
  479.                super.calendar.set(6, super.numberFormat.parse(var1, var7).intValue());
  480.                return var7.index;
  481.             case 11:
  482.                super.calendar.set(8, super.numberFormat.parse(var1, var7).intValue());
  483.                return var7.index;
  484.             case 12:
  485.                super.calendar.set(3, super.numberFormat.parse(var1, var7).intValue());
  486.                return var7.index;
  487.             case 13:
  488.                super.calendar.set(4, super.numberFormat.parse(var1, var7).intValue());
  489.                return var7.index;
  490.             case 14:
  491.                return this.matchString(var1, var2, 9, this.formatData.ampms);
  492.             case 15:
  493.                var5 = super.numberFormat.parse(var1, var7).intValue();
  494.                if (var5 == super.calendar.getLeastMaximum(10) + 1) {
  495.                   super.calendar.set(10, 0);
  496.                } else {
  497.                   super.calendar.set(10, var5);
  498.                }
  499.  
  500.                return var7.index;
  501.             case 16:
  502.                super.calendar.set(10, super.numberFormat.parse(var1, var7).intValue());
  503.                return var7.index;
  504.             case 17:
  505.                for(int var6 = 0; var6 < this.formatData.zoneStrings.length; ++var6) {
  506.                   int var9;
  507.                   for(var9 = 1; var9 <= 4 && !var1.regionMatches(true, var2, this.formatData.zoneStrings[var6][var9], 0, this.formatData.zoneStrings[var6][var9].length()); ++var9) {
  508.                   }
  509.  
  510.                   if (var9 <= 4) {
  511.                      super.calendar.set(15, TimeZone.getTimeZone(this.formatData.zoneStrings[var6][0]).getRawOffset());
  512.                      if (var9 >= 3) {
  513.                         super.calendar.set(16, 3600000);
  514.                      }
  515.  
  516.                      return var2 + this.formatData.zoneStrings[var6][var9].length();
  517.                   }
  518.                }
  519.  
  520.                if (var1.regionMatches(true, var2, "GMT", 0, "GMT".length())) {
  521.                   super.calendar.set(16, 0);
  522.                   var7.index = var2 + "GMT".length();
  523.                   int var19 = 0;
  524.                   byte var26;
  525.                   if (var1.regionMatches(var7.index, "+", 0, 1)) {
  526.                      var26 = 1;
  527.                   } else {
  528.                      if (!var1.regionMatches(var7.index, "-", 0, 1)) {
  529.                         super.calendar.set(15, 0);
  530.                         return var7.index;
  531.                      }
  532.  
  533.                      var26 = -1;
  534.                   }
  535.  
  536.                   ++var7.index;
  537.                   Number var28 = super.numberFormat.parse(var1, var7);
  538.                   if (var28 == null) {
  539.                      return -var2;
  540.                   } else {
  541.                      if (var1.regionMatches(var7.index, ":", 0, 1)) {
  542.                         var19 = var28.intValue() * 60;
  543.                         ++var7.index;
  544.                         var28 = super.numberFormat.parse(var1, var7);
  545.                         if (var28 == null) {
  546.                            return -var2;
  547.                         }
  548.  
  549.                         var19 += var28.intValue();
  550.                      } else {
  551.                         int var30 = var28.intValue();
  552.                         if (var30 < 24) {
  553.                            var19 = var30 * 60;
  554.                         } else {
  555.                            var19 = var30 % 100 + var30 / 100 * 60;
  556.                         }
  557.                      }
  558.  
  559.                      super.calendar.set(15, var19 * '\uea60' * var26);
  560.                      return var7.index;
  561.                   }
  562.                } else {
  563.                   DecimalFormat var18 = new DecimalFormat("+####;-####", new DecimalFormatSymbols(Locale.US));
  564.                   Number var10 = var18.parse(var1, var7);
  565.                   if (var10 == null) {
  566.                      return -var2;
  567.                   } else {
  568.                      int var11 = var10.intValue();
  569.                      byte var12 = 1;
  570.                      if (var11 < 0) {
  571.                         var12 = -1;
  572.                         var11 *= -1;
  573.                      }
  574.  
  575.                      if (var11 < 24) {
  576.                         var11 *= 60;
  577.                      } else {
  578.                         var11 = var11 % 100 + var11 / 100 * 60;
  579.                      }
  580.  
  581.                      super.calendar.set(15, var11 * '\uea60' * var12);
  582.                      return var7.index;
  583.                   }
  584.                }
  585.             default:
  586.                return -var2;
  587.          }
  588.       }
  589.    }
  590.  
  591.    private String translatePattern(String var1, String var2, String var3) {
  592.       StringBuffer var4 = new StringBuffer();
  593.       boolean var5 = false;
  594.  
  595.       for(int var6 = 0; var6 < var1.length(); ++var6) {
  596.          char var7 = var1.charAt(var6);
  597.          if (var5) {
  598.             if (var7 == '\'') {
  599.                var5 = false;
  600.             }
  601.          } else if (var7 == '\'') {
  602.             var5 = true;
  603.          } else if (var7 >= 'a' && var7 <= 'z' || var7 >= 'A' && var7 <= 'Z') {
  604.             int var8 = var2.indexOf(var7);
  605.             if (var8 == -1) {
  606.                throw new IllegalArgumentException("Illegal pattern  character '" + var7 + "'");
  607.             }
  608.  
  609.             var7 = var3.charAt(var8);
  610.          }
  611.  
  612.          var4.append(var7);
  613.       }
  614.  
  615.       if (var5) {
  616.          throw new IllegalArgumentException("Unfinished quote in pattern");
  617.       } else {
  618.          return var4.toString();
  619.       }
  620.    }
  621.  
  622.    public String toPattern() {
  623.       return this.pattern;
  624.    }
  625.  
  626.    public String toLocalizedPattern() {
  627.       return this.translatePattern(this.pattern, "GyMdkHmsSEDFwWahKz", this.formatData.localPatternChars);
  628.    }
  629.  
  630.    public void applyPattern(String var1) {
  631.       this.pattern = var1;
  632.    }
  633.  
  634.    public void applyLocalizedPattern(String var1) {
  635.       this.pattern = this.translatePattern(var1, this.formatData.localPatternChars, "GyMdkHmsSEDFwWahKz");
  636.    }
  637.  
  638.    public DateFormatSymbols getDateFormatSymbols() {
  639.       return (DateFormatSymbols)this.formatData.clone();
  640.    }
  641.  
  642.    public void setDateFormatSymbols(DateFormatSymbols var1) {
  643.       this.formatData = (DateFormatSymbols)var1.clone();
  644.    }
  645.  
  646.    public Object clone() {
  647.       SimpleDateFormat var1 = (SimpleDateFormat)super.clone();
  648.       var1.formatData = (DateFormatSymbols)this.formatData.clone();
  649.       return var1;
  650.    }
  651.  
  652.    public int hashCode() {
  653.       return this.pattern.hashCode();
  654.    }
  655.  
  656.    public boolean equals(Object var1) {
  657.       if (!super.equals(var1)) {
  658.          return false;
  659.       } else {
  660.          SimpleDateFormat var2 = (SimpleDateFormat)var1;
  661.          return this.pattern.equals(var2.pattern) && this.formatData.equals(var2.formatData);
  662.       }
  663.    }
  664. }
  665.