home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / Date.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  6.4 KB  |  506 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. import java.lang.ref.SoftReference;
  8. import java.text.DateFormat;
  9. import java.text.SimpleDateFormat;
  10.  
  11. public class Date implements Serializable, Cloneable, Comparable {
  12.    private transient Calendar cal;
  13.    private transient long fastTime;
  14.    private static Calendar staticCal = null;
  15.    private static Calendar utcCal = null;
  16.    private static int defaultCenturyStart = 0;
  17.    private static final long serialVersionUID = 7523967970034938905L;
  18.    private static SoftReference simpleFormatter = null;
  19.    private static SoftReference gmtFormatter = null;
  20.    private static final String[] wtb = new String[]{"am", "pm", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday", "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december", "gmt", "ut", "utc", "est", "edt", "cst", "cdt", "mst", "mdt", "pst", "pdt"};
  21.    private static final int[] ttb = new int[]{14, 1, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 10000, 10000, 10000, 10300, 10240, 10360, 10300, 10420, 10360, 10480, 10420};
  22.  
  23.    public Date() {
  24.       this(System.currentTimeMillis());
  25.    }
  26.  
  27.    public Date(long var1) {
  28.       this.cal = null;
  29.       this.fastTime = var1;
  30.    }
  31.  
  32.    public Date(int var1, int var2, int var3) {
  33.       this(var1, var2, var3, 0, 0, 0);
  34.    }
  35.  
  36.    public Date(int var1, int var2, int var3, int var4, int var5) {
  37.       this(var1, var2, var3, var4, var5, 0);
  38.    }
  39.  
  40.    public Date(int var1, int var2, int var3, int var4, int var5, int var6) {
  41.       this.cal = null;
  42.       if (staticCal == null) {
  43.          makeStaticCalendars();
  44.       }
  45.  
  46.       Calendar var7 = staticCal;
  47.       synchronized(var7) {
  48.          staticCal.setTimeZone(TimeZone.getDefault());
  49.          staticCal.clear();
  50.          staticCal.set(var1 + 1900, var2, var3, var4, var5, var6);
  51.          this.fastTime = staticCal.getTimeInMillis();
  52.       }
  53.    }
  54.  
  55.    public Date(String var1) {
  56.       this(parse(var1));
  57.    }
  58.  
  59.    public Object clone() {
  60.       Date var1 = null;
  61.  
  62.       try {
  63.          var1 = (Date)super.clone();
  64.          if (var1.cal != null) {
  65.             var1.cal = (Calendar)var1.cal.clone();
  66.          }
  67.       } catch (CloneNotSupportedException var3) {
  68.       }
  69.  
  70.       return var1;
  71.    }
  72.  
  73.    public static long UTC(int var0, int var1, int var2, int var3, int var4, int var5) {
  74.       if (utcCal == null) {
  75.          makeStaticCalendars();
  76.       }
  77.  
  78.       Calendar var6 = utcCal;
  79.       synchronized(var6) {
  80.          utcCal.clear();
  81.          utcCal.set(var0 + 1900, var1, var2, var3, var4, var5);
  82.          long var7 = utcCal.getTimeInMillis();
  83.          return var7;
  84.       }
  85.    }
  86.  
  87.    public static long parse(String var0) {
  88.       if (staticCal == null) {
  89.          makeStaticCalendars();
  90.       }
  91.  
  92.       int var1 = Integer.MIN_VALUE;
  93.       byte var2 = -1;
  94.       byte var3 = -1;
  95.       int var4 = -1;
  96.       byte var5 = -1;
  97.       byte var6 = -1;
  98.       boolean var7 = true;
  99.       char var8 = '\uffff';
  100.       int var9 = 0;
  101.       int var10 = -1;
  102.       boolean var11 = true;
  103.       int var12 = -1;
  104.       char var13 = 0;
  105.       if (var0 != null) {
  106.          int var14 = var0.length();
  107.  
  108.          while(true) {
  109.             if (var9 >= var14) {
  110.                if (var1 != Integer.MIN_VALUE && var2 >= 0 && var3 >= 0) {
  111.                   if (var1 < 100) {
  112.                      var1 += defaultCenturyStart / 100 * 100;
  113.                      if (var1 < defaultCenturyStart) {
  114.                         var1 += 100;
  115.                      }
  116.                   }
  117.  
  118.                   var1 -= 1900;
  119.                   if (var6 < 0) {
  120.                      var6 = 0;
  121.                   }
  122.  
  123.                   if (var5 < 0) {
  124.                      var5 = 0;
  125.                   }
  126.  
  127.                   if (var4 < 0) {
  128.                      var4 = 0;
  129.                   }
  130.  
  131.                   if (var12 == -1) {
  132.                      return (new Date(var1, var2, var3, var4, var5, var6)).getTime();
  133.                   }
  134.  
  135.                   return UTC(var1, var2, var3, var4, var5, var6) + (long)(var12 * '\uea60');
  136.                }
  137.                break;
  138.             }
  139.  
  140.             var8 = var0.charAt(var9);
  141.             ++var9;
  142.             if (var8 > ' ' && var8 != ',') {
  143.                if (var8 == '(') {
  144.                   int var24 = 1;
  145.  
  146.                   while(var9 < var14) {
  147.                      var8 = var0.charAt(var9);
  148.                      ++var9;
  149.                      if (var8 == '(') {
  150.                         ++var24;
  151.                      } else if (var8 == ')') {
  152.                         --var24;
  153.                         if (var24 <= 0) {
  154.                            break;
  155.                         }
  156.                      }
  157.                   }
  158.                } else if ('0' <= var8 && var8 <= '9') {
  159.                   for(var10 = var8 - 48; var9 < var14 && '0' <= (var8 = var0.charAt(var9)) && var8 <= '9'; ++var9) {
  160.                      var10 = var10 * 10 + var8 - 48;
  161.                   }
  162.  
  163.                   if (var13 != '+' && (var13 != '-' || var1 == Integer.MIN_VALUE)) {
  164.                      if (var10 >= 70) {
  165.                         if (var1 != Integer.MIN_VALUE || var8 > ' ' && var8 != ',' && var8 != '/' && var9 < var14) {
  166.                            break;
  167.                         }
  168.  
  169.                         var1 = var10;
  170.                      } else if (var8 == ':') {
  171.                         if (var4 < 0) {
  172.                            var4 = (byte)var10;
  173.                         } else {
  174.                            if (var5 >= 0) {
  175.                               break;
  176.                            }
  177.  
  178.                            var5 = (byte)var10;
  179.                         }
  180.                      } else if (var8 == '/') {
  181.                         if (var2 < 0) {
  182.                            var2 = (byte)(var10 - 1);
  183.                         } else {
  184.                            if (var3 >= 0) {
  185.                               break;
  186.                            }
  187.  
  188.                            var3 = (byte)var10;
  189.                         }
  190.                      } else {
  191.                         if (var9 < var14 && var8 != ',' && var8 > ' ' && var8 != '-') {
  192.                            break;
  193.                         }
  194.  
  195.                         if (var4 >= 0 && var5 < 0) {
  196.                            var5 = (byte)var10;
  197.                         } else if (var5 >= 0 && var6 < 0) {
  198.                            var6 = (byte)var10;
  199.                         } else if (var3 < 0) {
  200.                            var3 = (byte)var10;
  201.                         } else {
  202.                            if (var1 != Integer.MIN_VALUE || var2 < 0 || var3 < 0) {
  203.                               break;
  204.                            }
  205.  
  206.                            var1 = var10;
  207.                         }
  208.                      }
  209.                   } else {
  210.                      if (var10 < 24) {
  211.                         var10 *= 60;
  212.                      } else {
  213.                         var10 = var10 % 100 + var10 / 100 * 60;
  214.                      }
  215.  
  216.                      if (var13 == '+') {
  217.                         var10 = -var10;
  218.                      }
  219.  
  220.                      if (var12 != 0 && var12 != -1) {
  221.                         break;
  222.                      }
  223.  
  224.                      var12 = var10;
  225.                   }
  226.  
  227.                   var13 = 0;
  228.                } else if (var8 != '/' && var8 != ':' && var8 != '+' && var8 != '-') {
  229.                   int var15;
  230.                   for(var15 = var9 - 1; var9 < var14; ++var9) {
  231.                      var8 = var0.charAt(var9);
  232.                      if (('A' > var8 || var8 > 'Z') && ('a' > var8 || var8 > 'z')) {
  233.                         break;
  234.                      }
  235.                   }
  236.  
  237.                   if (var9 <= var15 + 1) {
  238.                      break;
  239.                   }
  240.  
  241.                   int var16 = wtb.length;
  242.  
  243.                   while(true) {
  244.                      --var16;
  245.                      if (var16 < 0) {
  246.                         break;
  247.                      }
  248.  
  249.                      if (wtb[var16].regionMatches(true, 0, var0, var15, var9 - var15)) {
  250.                         int var17 = ttb[var16];
  251.                         if (var17 != 0) {
  252.                            if (var17 == 1) {
  253.                               if (var4 > 12 || var4 < 1) {
  254.                                  throw new IllegalArgumentException();
  255.                               }
  256.  
  257.                               if (var4 < 12) {
  258.                                  var4 += 12;
  259.                               }
  260.                            } else if (var17 == 14) {
  261.                               if (var4 > 12 || var4 < 1) {
  262.                                  throw new IllegalArgumentException();
  263.                               }
  264.  
  265.                               if (var4 == 12) {
  266.                                  var4 = 0;
  267.                               }
  268.                            } else if (var17 <= 13) {
  269.                               if (var2 >= 0) {
  270.                                  throw new IllegalArgumentException();
  271.                               }
  272.  
  273.                               var2 = (byte)(var17 - 2);
  274.                            } else {
  275.                               var12 = var17 - 10000;
  276.                            }
  277.                         }
  278.                         break;
  279.                      }
  280.                   }
  281.  
  282.                   if (var16 < 0) {
  283.                      break;
  284.                   }
  285.  
  286.                   var13 = 0;
  287.                } else {
  288.                   var13 = var8;
  289.                }
  290.             }
  291.          }
  292.       }
  293.  
  294.       throw new IllegalArgumentException();
  295.    }
  296.  
  297.    public int getYear() {
  298.       return this.getField(1) - 1900;
  299.    }
  300.  
  301.    public void setYear(int var1) {
  302.       this.setField(1, var1 + 1900);
  303.    }
  304.  
  305.    public int getMonth() {
  306.       return this.getField(2);
  307.    }
  308.  
  309.    public void setMonth(int var1) {
  310.       this.setField(2, var1);
  311.    }
  312.  
  313.    public int getDate() {
  314.       return this.getField(5);
  315.    }
  316.  
  317.    public void setDate(int var1) {
  318.       this.setField(5, var1);
  319.    }
  320.  
  321.    public int getDay() {
  322.       return this.getField(7) - 1;
  323.    }
  324.  
  325.    public int getHours() {
  326.       return this.getField(11);
  327.    }
  328.  
  329.    public void setHours(int var1) {
  330.       this.setField(11, var1);
  331.    }
  332.  
  333.    public int getMinutes() {
  334.       return this.getField(12);
  335.    }
  336.  
  337.    public void setMinutes(int var1) {
  338.       this.setField(12, var1);
  339.    }
  340.  
  341.    public int getSeconds() {
  342.       return this.getField(13);
  343.    }
  344.  
  345.    public void setSeconds(int var1) {
  346.       this.setField(13, var1);
  347.    }
  348.  
  349.    public long getTime() {
  350.       return this.cal == null ? this.fastTime : this.cal.getTimeInMillis();
  351.    }
  352.  
  353.    public void setTime(long var1) {
  354.       if (this.cal == null) {
  355.          this.fastTime = var1;
  356.       } else {
  357.          this.cal.setTimeInMillis(var1);
  358.       }
  359.  
  360.    }
  361.  
  362.    public boolean before(Date var1) {
  363.       return this.getTime() < var1.getTime();
  364.    }
  365.  
  366.    public boolean after(Date var1) {
  367.       return this.getTime() > var1.getTime();
  368.    }
  369.  
  370.    public boolean equals(Object var1) {
  371.       return var1 instanceof Date && this.getTime() == ((Date)var1).getTime();
  372.    }
  373.  
  374.    public int compareTo(Date var1) {
  375.       long var2 = this.getTime();
  376.       long var4 = var1.getTime();
  377.       return var2 < var4 ? -1 : (var2 == var4 ? 0 : 1);
  378.    }
  379.  
  380.    public int compareTo(Object var1) {
  381.       return this.compareTo((Date)var1);
  382.    }
  383.  
  384.    public int hashCode() {
  385.       long var1 = this.getTime();
  386.       return (int)var1 ^ (int)(var1 >> 32);
  387.    }
  388.  
  389.    public String toString() {
  390.       Object var1 = null;
  391.       if (simpleFormatter != null) {
  392.          var1 = (DateFormat)simpleFormatter.get();
  393.       }
  394.  
  395.       if (var1 == null) {
  396.          var1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
  397.          simpleFormatter = new SoftReference(var1);
  398.       }
  399.  
  400.       synchronized(var1) {
  401.          ((DateFormat)var1).setTimeZone(TimeZone.getDefault());
  402.          String var3 = ((DateFormat)var1).format(this);
  403.          return var3;
  404.       }
  405.    }
  406.  
  407.    public String toLocaleString() {
  408.       DateFormat var1 = DateFormat.getDateTimeInstance();
  409.       return var1.format(this);
  410.    }
  411.  
  412.    public String toGMTString() {
  413.       Object var1 = null;
  414.       if (gmtFormatter != null) {
  415.          var1 = (DateFormat)gmtFormatter.get();
  416.       }
  417.  
  418.       if (var1 == null) {
  419.          var1 = new SimpleDateFormat("d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
  420.          ((DateFormat)var1).setTimeZone(TimeZone.getTimeZone("GMT"));
  421.          gmtFormatter = new SoftReference(var1);
  422.       }
  423.  
  424.       return ((DateFormat)var1).format(this);
  425.    }
  426.  
  427.    public int getTimezoneOffset() {
  428.       int var1;
  429.       if (this.cal == null) {
  430.          if (staticCal == null) {
  431.             makeStaticCalendars();
  432.          }
  433.  
  434.          Calendar var2 = staticCal;
  435.          synchronized(var2) {
  436.             staticCal.setTimeZone(TimeZone.getDefault());
  437.             staticCal.setTimeInMillis(this.getTime());
  438.             var1 = staticCal.get(15) + staticCal.get(16);
  439.          }
  440.       } else {
  441.          TimeZone var6 = TimeZone.getDefault();
  442.          if (!var6.equals(this.cal.getTimeZone())) {
  443.             long var3 = this.cal.getTimeInMillis();
  444.             this.cal.setTimeZone(TimeZone.getDefault());
  445.             this.cal.setTimeInMillis(var3);
  446.          }
  447.  
  448.          var1 = this.cal.get(15) + this.cal.get(16);
  449.       }
  450.  
  451.       return -(var1 / 1000 / 60);
  452.    }
  453.  
  454.    private void writeObject(ObjectOutputStream var1) throws IOException {
  455.       var1.writeLong(this.getTime());
  456.    }
  457.  
  458.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  459.       this.fastTime = var1.readLong();
  460.    }
  461.  
  462.    private final int getField(int var1) {
  463.       if (this.cal == null) {
  464.          if (staticCal == null) {
  465.             makeStaticCalendars();
  466.          }
  467.  
  468.          Calendar var6 = staticCal;
  469.          synchronized(var6) {
  470.             staticCal.setTimeZone(TimeZone.getDefault());
  471.             staticCal.setTimeInMillis(this.fastTime);
  472.             int var7 = staticCal.get(var1);
  473.             return var7;
  474.          }
  475.       } else {
  476.          TimeZone var2 = TimeZone.getDefault();
  477.          if (!var2.equals(this.cal.getTimeZone())) {
  478.             long var3 = this.cal.getTimeInMillis();
  479.             this.cal.setTimeZone(TimeZone.getDefault());
  480.             this.cal.setTimeInMillis(var3);
  481.          }
  482.  
  483.          return this.cal.get(var1);
  484.       }
  485.    }
  486.  
  487.    private final void setField(int var1, int var2) {
  488.       if (this.cal == null) {
  489.          this.cal = new GregorianCalendar();
  490.          this.cal.setTimeInMillis(this.fastTime);
  491.       }
  492.  
  493.       this.cal.set(var1, var2);
  494.    }
  495.  
  496.    private static synchronized void makeStaticCalendars() {
  497.       if (staticCal == null) {
  498.          GregorianCalendar var0 = new GregorianCalendar();
  499.          utcCal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
  500.          defaultCenturyStart = ((Calendar)var0).get(1) - 80;
  501.          staticCal = var0;
  502.       }
  503.  
  504.    }
  505. }
  506.