home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / java / text / SimpleDateFormat.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  11.1 KB  |  666 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.       byte var7 = 10;
  133.       String var8 = "";
  134.       if ((var6 = "GyMdkHmsSEDFwWahKz".indexOf(var1)) == -1) {
  135.          throw new IllegalArgumentException("Illegal pattern character '" + var1 + "'");
  136.       } else {
  137.          switch (var6) {
  138.             case 0:
  139.                var5 = super.calendar.get(0);
  140.                var8 = this.formatData.eras[var5];
  141.                break;
  142.             case 1:
  143.                var5 = super.calendar.get(1);
  144.                if (var2 >= 4) {
  145.                   var8 = this.zeroPaddingNumber((long)var5, 4, var7);
  146.                } else {
  147.                   var8 = this.zeroPaddingNumber((long)var5, 2, 2);
  148.                }
  149.                break;
  150.             case 2:
  151.                var5 = super.calendar.get(2);
  152.                if (var2 >= 4) {
  153.                   var8 = this.formatData.months[var5];
  154.                } else if (var2 == 3) {
  155.                   var8 = this.formatData.shortMonths[var5];
  156.                } else {
  157.                   var8 = this.zeroPaddingNumber((long)(var5 + 1), var2, var7);
  158.                }
  159.                break;
  160.             case 3:
  161.                var5 = super.calendar.get(5);
  162.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  163.                break;
  164.             case 4:
  165.                if ((var5 = super.calendar.get(11)) == 0) {
  166.                   var8 = this.zeroPaddingNumber((long)(super.calendar.getMaximum(11) + 1), var2, var7);
  167.                } else {
  168.                   var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  169.                }
  170.                break;
  171.             case 5:
  172.                var5 = super.calendar.get(11);
  173.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  174.                break;
  175.             case 6:
  176.                var5 = super.calendar.get(12);
  177.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  178.                break;
  179.             case 7:
  180.                var5 = super.calendar.get(13);
  181.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  182.                break;
  183.             case 8:
  184.                var5 = super.calendar.get(14);
  185.                if (var2 > 3) {
  186.                   var2 = 3;
  187.                } else if (var2 == 2) {
  188.                   var5 /= 10;
  189.                } else if (var2 == 1) {
  190.                   var5 /= 100;
  191.                }
  192.  
  193.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  194.                break;
  195.             case 9:
  196.                var5 = super.calendar.get(7);
  197.                if (var2 >= 4) {
  198.                   var8 = this.formatData.weekdays[var5];
  199.                } else {
  200.                   var8 = this.formatData.shortWeekdays[var5];
  201.                }
  202.                break;
  203.             case 10:
  204.                var5 = super.calendar.get(6);
  205.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  206.                break;
  207.             case 11:
  208.                var5 = super.calendar.get(8);
  209.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  210.                break;
  211.             case 12:
  212.                var5 = super.calendar.get(3);
  213.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  214.                break;
  215.             case 13:
  216.                var5 = super.calendar.get(4);
  217.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  218.                break;
  219.             case 14:
  220.                var5 = super.calendar.get(9);
  221.                var8 = this.formatData.ampms[var5];
  222.                break;
  223.             case 15:
  224.                if ((var5 = super.calendar.get(10)) == 0) {
  225.                   var8 = this.zeroPaddingNumber((long)(super.calendar.getLeastMaximum(10) + 1), var2, var7);
  226.                } else {
  227.                   var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  228.                }
  229.                break;
  230.             case 16:
  231.                var5 = super.calendar.get(10);
  232.                var8 = this.zeroPaddingNumber((long)var5, var2, var7);
  233.                break;
  234.             case 17:
  235.                int var9 = this.formatData.getZoneIndex(super.calendar.getTimeZone().getID());
  236.                if (var9 == -1) {
  237.                   StringBuffer var10 = new StringBuffer();
  238.                   var5 = super.calendar.get(15) + super.calendar.get(16);
  239.                   if (var5 < 0) {
  240.                      var10.append("GMT-");
  241.                      var5 = -var5;
  242.                   } else {
  243.                      var10.append("GMT+");
  244.                   }
  245.  
  246.                   var10.append(this.zeroPaddingNumber((long)(var5 / 3600000), 2, 2));
  247.                   var10.append(':');
  248.                   var10.append(this.zeroPaddingNumber((long)(var5 % 3600000 / '\uea60'), 2, 2));
  249.                   var8 = var10.toString();
  250.                } else if (super.calendar.get(16) != 0) {
  251.                   if (var2 >= 4) {
  252.                      var8 = this.formatData.zoneStrings[var9][3];
  253.                   } else {
  254.                      var8 = this.formatData.zoneStrings[var9][4];
  255.                   }
  256.                } else if (var2 >= 4) {
  257.                   var8 = this.formatData.zoneStrings[var9][1];
  258.                } else {
  259.                   var8 = this.formatData.zoneStrings[var9][2];
  260.                }
  261.          }
  262.  
  263.          if (var4.field == var6 && var4.beginIndex == 0 && var4.endIndex == 0) {
  264.             var4.beginIndex = var3;
  265.             var4.endIndex = var3 + var8.length();
  266.          }
  267.  
  268.          return var8;
  269.       }
  270.    }
  271.  
  272.    private String zeroPaddingNumber(long var1, int var3, int var4) {
  273.       super.numberFormat.setMinimumIntegerDigits(var3);
  274.       super.numberFormat.setMaximumIntegerDigits(var4);
  275.       return super.numberFormat.format(var1);
  276.    }
  277.  
  278.    public Date parse(String var1, ParsePosition var2) {
  279.       int var10 = var2.index;
  280.       int var4 = var10;
  281.       super.calendar.clear();
  282.       boolean var5 = false;
  283.       char var6 = 0;
  284.       int var7 = 0;
  285.  
  286.       for(int var8 = 0; var8 < this.pattern.length(); ++var8) {
  287.          char var9 = this.pattern.charAt(var8);
  288.          if (var5) {
  289.             if (var9 == '\'') {
  290.                var5 = false;
  291.                if (var6 == '\'') {
  292.                   ++var10;
  293.                }
  294.             } else {
  295.                if (var9 != var1.charAt(var10)) {
  296.                   var2.index = var4;
  297.                   return null;
  298.                }
  299.  
  300.                ++var10;
  301.                var6 = var9;
  302.             }
  303.          } else if (var9 == '\'') {
  304.             var5 = true;
  305.             if (var7 > 0) {
  306.                if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  307.                   var2.index = var4;
  308.                   return null;
  309.                }
  310.  
  311.                var7 = 0;
  312.             }
  313.  
  314.             var6 = var9;
  315.          } else if (var9 >= 'a' && var9 <= 'z' || var9 >= 'A' && var9 <= 'Z') {
  316.             if (var9 != var6 && var7 > 0) {
  317.                if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  318.                   var2.index = var4;
  319.                   return null;
  320.                }
  321.  
  322.                var6 = var9;
  323.                var7 = 1;
  324.             } else {
  325.                if (var9 != var6) {
  326.                   var6 = var9;
  327.                }
  328.  
  329.                ++var7;
  330.             }
  331.          } else if (var7 > 0) {
  332.             if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  333.                var2.index = var4;
  334.                return null;
  335.             }
  336.  
  337.             if (var9 != var1.charAt(var10)) {
  338.                var2.index = var4;
  339.                return null;
  340.             }
  341.  
  342.             ++var10;
  343.             var7 = 0;
  344.             var6 = 0;
  345.          } else {
  346.             if (var9 != var1.charAt(var10)) {
  347.                var2.index = var4;
  348.                return null;
  349.             }
  350.  
  351.             ++var10;
  352.          }
  353.       }
  354.  
  355.       if (var7 > 0 && (var10 = this.subParse(var1, var10, var6, var7)) < 0) {
  356.          var2.index = var4;
  357.          return null;
  358.       } else {
  359.          var2.index = var10;
  360.          if (!super.calendar.isSet(1)) {
  361.             super.calendar.set(1, 1970);
  362.          }
  363.  
  364.          if (!super.calendar.isSet(2)) {
  365.             super.calendar.set(2, 0);
  366.          }
  367.  
  368.          if (!super.calendar.isSet(5)) {
  369.             super.calendar.set(5, 1);
  370.          }
  371.  
  372.          if (!super.calendar.isSet(11) && !super.calendar.isSet(10)) {
  373.             super.calendar.set(11, 0);
  374.          }
  375.  
  376.          if (!super.calendar.isSet(12)) {
  377.             super.calendar.set(12, 0);
  378.          }
  379.  
  380.          if (!super.calendar.isSet(13)) {
  381.             super.calendar.set(13, 0);
  382.          }
  383.  
  384.          if (!super.calendar.isSet(14)) {
  385.             super.calendar.set(14, 0);
  386.          }
  387.  
  388.          if (!super.calendar.isSet(0)) {
  389.             super.calendar.set(0, 1);
  390.          }
  391.  
  392.          return super.calendar.getTime();
  393.       }
  394.    }
  395.  
  396.    private int matchString(String var1, int var2, int var3, String[] var4) {
  397.       int var5 = 0;
  398.       int var6 = var4.length;
  399.       if (var3 == 7) {
  400.          var5 = 1;
  401.       }
  402.  
  403.       while(var5 < var6 && (var4[var5].length() == 0 || !var1.regionMatches(true, var2, var4[var5], 0, var4[var5].length()))) {
  404.          ++var5;
  405.       }
  406.  
  407.       if (var5 < var6) {
  408.          super.calendar.set(var3, var5);
  409.          return var2 + var4[var5].length();
  410.       } else {
  411.          return -var2;
  412.       }
  413.    }
  414.  
  415.    private int subParse(String var1, int var2, char var3, int var4) {
  416.       int var5 = 0;
  417.       ParsePosition var7 = new ParsePosition(0);
  418.       int var8 = -1;
  419.       if ((var8 = "GyMdkHmsSEDFwWahKz".indexOf(var3)) == -1) {
  420.          return -var2;
  421.       } else {
  422.          var7.index = var2;
  423.          switch (var8) {
  424.             case 0:
  425.                return this.matchString(var1, var2, 0, this.formatData.eras);
  426.             case 1:
  427.                if (var4 >= 4) {
  428.                   var5 = (int)Integer.valueOf(var1.substring(var2, var2 + var4)).longValue();
  429.                   super.calendar.set(1, var5);
  430.                } else {
  431.                   var5 = (int)Integer.valueOf(var1.substring(var2, var2 + 2)).longValue();
  432.                   super.calendar.set(1, var5 + 1900);
  433.                }
  434.  
  435.                return var2 + var4;
  436.             case 2:
  437.                if (var4 <= 2) {
  438.                   super.calendar.set(2, super.numberFormat.parse(var1, var7).intValue() - 1);
  439.                   return var7.index;
  440.                } else {
  441.                   int var24 = 0;
  442.                   if ((var24 = this.matchString(var1, var2, 2, this.formatData.months)) > 0) {
  443.                      return var24;
  444.                   }
  445.  
  446.                   return this.matchString(var1, var2, 2, this.formatData.shortMonths);
  447.                }
  448.             case 3:
  449.                super.calendar.set(5, super.numberFormat.parse(var1, var7).intValue());
  450.                return var7.index;
  451.             case 4:
  452.                var5 = super.numberFormat.parse(var1, var7).intValue();
  453.                if (var5 == super.calendar.getMaximum(11) + 1) {
  454.                   super.calendar.set(11, 0);
  455.                } else {
  456.                   super.calendar.set(11, var5);
  457.                }
  458.  
  459.                return var7.index;
  460.             case 5:
  461.                super.calendar.set(11, super.numberFormat.parse(var1, var7).intValue());
  462.                return var7.index;
  463.             case 6:
  464.                super.calendar.set(12, super.numberFormat.parse(var1, var7).intValue());
  465.                return var7.index;
  466.             case 7:
  467.                super.calendar.set(13, super.numberFormat.parse(var1, var7).intValue());
  468.                return var7.index;
  469.             case 8:
  470.                super.calendar.set(14, super.numberFormat.parse(var1, var7).intValue());
  471.                return var7.index;
  472.             case 9:
  473.                int var22 = 0;
  474.                if ((var22 = this.matchString(var1, var2, 7, this.formatData.weekdays)) > 0) {
  475.                   return var22;
  476.                }
  477.  
  478.                return this.matchString(var1, var2, 7, this.formatData.shortWeekdays);
  479.             case 10:
  480.                super.calendar.set(6, super.numberFormat.parse(var1, var7).intValue());
  481.                return var7.index;
  482.             case 11:
  483.                super.calendar.set(8, super.numberFormat.parse(var1, var7).intValue());
  484.                return var7.index;
  485.             case 12:
  486.                super.calendar.set(3, super.numberFormat.parse(var1, var7).intValue());
  487.                return var7.index;
  488.             case 13:
  489.                super.calendar.set(4, super.numberFormat.parse(var1, var7).intValue());
  490.                return var7.index;
  491.             case 14:
  492.                return this.matchString(var1, var2, 9, this.formatData.ampms);
  493.             case 15:
  494.                var5 = super.numberFormat.parse(var1, var7).intValue();
  495.                if (var5 == super.calendar.getLeastMaximum(10) + 1) {
  496.                   super.calendar.set(10, 0);
  497.                } else {
  498.                   super.calendar.set(10, var5);
  499.                }
  500.  
  501.                return var7.index;
  502.             case 16:
  503.                super.calendar.set(10, super.numberFormat.parse(var1, var7).intValue());
  504.                return var7.index;
  505.             case 17:
  506.                for(int var6 = 0; var6 < this.formatData.zoneStrings.length; ++var6) {
  507.                   int var9;
  508.                   for(var9 = 1; var9 <= 4 && !var1.regionMatches(true, var2, this.formatData.zoneStrings[var6][var9], 0, this.formatData.zoneStrings[var6][var9].length()); ++var9) {
  509.                   }
  510.  
  511.                   if (var9 <= 4) {
  512.                      super.calendar.set(15, TimeZone.getTimeZone(this.formatData.zoneStrings[var6][0]).getRawOffset());
  513.                      if (var9 >= 3) {
  514.                         super.calendar.set(16, 3600000);
  515.                      }
  516.  
  517.                      return var2 + this.formatData.zoneStrings[var6][var9].length();
  518.                   }
  519.                }
  520.  
  521.                if (var1.regionMatches(true, var2, "GMT", 0, "GMT".length())) {
  522.                   super.calendar.set(16, 0);
  523.                   var7.index = var2 + "GMT".length();
  524.                   int var19 = 0;
  525.                   byte var26;
  526.                   if (var1.regionMatches(var7.index, "+", 0, 1)) {
  527.                      var26 = 1;
  528.                   } else {
  529.                      if (!var1.regionMatches(var7.index, "-", 0, 1)) {
  530.                         super.calendar.set(15, 0);
  531.                         return var7.index;
  532.                      }
  533.  
  534.                      var26 = -1;
  535.                   }
  536.  
  537.                   ++var7.index;
  538.                   Number var28 = super.numberFormat.parse(var1, var7);
  539.                   if (var28 == null) {
  540.                      return -var2;
  541.                   } else {
  542.                      if (var1.regionMatches(var7.index, ":", 0, 1)) {
  543.                         var19 = var28.intValue() * 60;
  544.                         ++var7.index;
  545.                         var28 = super.numberFormat.parse(var1, var7);
  546.                         if (var28 == null) {
  547.                            return -var2;
  548.                         }
  549.  
  550.                         var19 += var28.intValue();
  551.                      } else {
  552.                         int var30 = var28.intValue();
  553.                         if (var30 < 24) {
  554.                            var19 = var30 * 60;
  555.                         } else {
  556.                            var19 = var30 % 100 + var30 / 100 * 60;
  557.                         }
  558.                      }
  559.  
  560.                      super.calendar.set(15, var19 * '\uea60' * var26);
  561.                      return var7.index;
  562.                   }
  563.                } else {
  564.                   DecimalFormat var18 = new DecimalFormat("+####;-####", new DecimalFormatSymbols(Locale.US));
  565.                   Number var10 = var18.parse(var1, var7);
  566.                   if (var10 == null) {
  567.                      return -var2;
  568.                   } else {
  569.                      int var11 = var10.intValue();
  570.                      byte var12 = 1;
  571.                      if (var11 < 0) {
  572.                         var12 = -1;
  573.                         var11 *= -1;
  574.                      }
  575.  
  576.                      if (var11 < 24) {
  577.                         var11 *= 60;
  578.                      } else {
  579.                         var11 = var11 % 100 + var11 / 100 * 60;
  580.                      }
  581.  
  582.                      super.calendar.set(15, var11 * '\uea60' * var12);
  583.                      return var7.index;
  584.                   }
  585.                }
  586.             default:
  587.                return -var2;
  588.          }
  589.       }
  590.    }
  591.  
  592.    private String translatePattern(String var1, String var2, String var3) {
  593.       StringBuffer var4 = new StringBuffer();
  594.       boolean var5 = false;
  595.  
  596.       for(int var6 = 0; var6 < var1.length(); ++var6) {
  597.          char var7 = var1.charAt(var6);
  598.          if (var5) {
  599.             if (var7 == '\'') {
  600.                var5 = false;
  601.             }
  602.          } else if (var7 == '\'') {
  603.             var5 = true;
  604.          } else if (var7 >= 'a' && var7 <= 'z' || var7 >= 'A' && var7 <= 'Z') {
  605.             int var8 = var2.indexOf(var7);
  606.             if (var8 == -1) {
  607.                throw new IllegalArgumentException("Illegal pattern  character '" + var7 + "'");
  608.             }
  609.  
  610.             var7 = var3.charAt(var8);
  611.          }
  612.  
  613.          var4.append(var7);
  614.       }
  615.  
  616.       if (var5) {
  617.          throw new IllegalArgumentException("Unfinished quote in pattern");
  618.       } else {
  619.          return var4.toString();
  620.       }
  621.    }
  622.  
  623.    public String toPattern() {
  624.       return this.pattern;
  625.    }
  626.  
  627.    public String toLocalizedPattern() {
  628.       return this.translatePattern(this.pattern, "GyMdkHmsSEDFwWahKz", this.formatData.localPatternChars);
  629.    }
  630.  
  631.    public void applyPattern(String var1) {
  632.       this.pattern = var1;
  633.    }
  634.  
  635.    public void applyLocalizedPattern(String var1) {
  636.       this.pattern = this.translatePattern(var1, this.formatData.localPatternChars, "GyMdkHmsSEDFwWahKz");
  637.    }
  638.  
  639.    public DateFormatSymbols getDateFormatSymbols() {
  640.       return (DateFormatSymbols)this.formatData.clone();
  641.    }
  642.  
  643.    public void setDateFormatSymbols(DateFormatSymbols var1) {
  644.       this.formatData = (DateFormatSymbols)var1.clone();
  645.    }
  646.  
  647.    public Object clone() {
  648.       SimpleDateFormat var1 = (SimpleDateFormat)super.clone();
  649.       var1.formatData = (DateFormatSymbols)this.formatData.clone();
  650.       return var1;
  651.    }
  652.  
  653.    public int hashCode() {
  654.       return this.pattern.hashCode();
  655.    }
  656.  
  657.    public boolean equals(Object var1) {
  658.       if (!super.equals(var1)) {
  659.          return false;
  660.       } else {
  661.          SimpleDateFormat var2 = (SimpleDateFormat)var1;
  662.          return this.pattern.equals(var2.pattern) && this.formatData.equals(var2.formatData);
  663.       }
  664.    }
  665. }
  666.