home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / java / util / SimpleTimeZone.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  3.3 KB  |  180 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5.  
  6. public class SimpleTimeZone extends TimeZone {
  7.    private int startMonth;
  8.    private int startDay;
  9.    private int startDayOfWeek;
  10.    private int startTime;
  11.    private int endMonth;
  12.    private int endDay;
  13.    private int endDayOfWeek;
  14.    private int endTime;
  15.    private int startYear;
  16.    private int rawOffset;
  17.    private boolean useDaylight = false;
  18.    private static final int millisPerHour = 3600000;
  19.    private final byte[] monthLength;
  20.    private static final byte[] staticMonthLength = new byte[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  21.    static final long serialVersionUID = -403250971215465050L;
  22.  
  23.    public SimpleTimeZone(int var1, String var2) {
  24.       this.monthLength = staticMonthLength;
  25.       this.rawOffset = var1;
  26.       ((TimeZone)this).setID(var2);
  27.    }
  28.  
  29.    public SimpleTimeZone(int var1, String var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) {
  30.       this.monthLength = staticMonthLength;
  31.       ((TimeZone)this).setID(var2);
  32.       this.rawOffset = var1;
  33.       this.startMonth = var3;
  34.       this.startDay = var4;
  35.       this.startDayOfWeek = var5;
  36.       this.startTime = var6;
  37.       this.endMonth = var7;
  38.       this.endDay = var8;
  39.       this.endDayOfWeek = var9;
  40.       this.endTime = var10;
  41.       this.useDaylight = true;
  42.    }
  43.  
  44.    public void setStartYear(int var1) {
  45.       this.startYear = var1;
  46.       this.useDaylight = true;
  47.    }
  48.  
  49.    public void setStartRule(int var1, int var2, int var3, int var4) {
  50.       this.startMonth = var1;
  51.       this.startDay = var2;
  52.       this.startDayOfWeek = var3;
  53.       this.startTime = var4;
  54.       this.useDaylight = true;
  55.    }
  56.  
  57.    public void setEndRule(int var1, int var2, int var3, int var4) {
  58.       this.endMonth = var1;
  59.       this.endDay = var2;
  60.       this.endDayOfWeek = var3;
  61.       this.endTime = var4;
  62.       this.useDaylight = true;
  63.    }
  64.  
  65.    public int getOffset(int var1, int var2, int var3, int var4, int var5, int var6) {
  66.       int var7 = this.rawOffset;
  67.       if (var2 >= this.startYear && var1 == 1) {
  68.          boolean var8 = this.startMonth > this.endMonth;
  69.          int var9 = compareToRule(var3, var4, var5, var6, this.startMonth, this.startDayOfWeek, this.startDay, this.startTime);
  70.          int var10 = compareToRule(var3, var4, var5, var6 + 3600000, this.endMonth, this.endDayOfWeek, this.endDay, this.endTime);
  71.          if (!var8 && var9 >= 0 && var10 < 0 || var8 && (var9 >= 0 || var10 < 0)) {
  72.             var7 += 3600000;
  73.          }
  74.  
  75.          return var7;
  76.       } else {
  77.          return var7;
  78.       }
  79.    }
  80.  
  81.    private static int compareToRule(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  82.       if (var0 < var4) {
  83.          return -1;
  84.       } else if (var0 > var4) {
  85.          return 1;
  86.       } else {
  87.          byte var8 = staticMonthLength[var0];
  88.          int var9;
  89.          if (var6 > 0) {
  90.             var9 = 1 + (var6 - 1) * 7 + (7 + var5 - (var2 - var1 + 1)) % 7;
  91.          } else {
  92.             var9 = var8 + (var6 + 1) * 7 - (7 + (var2 + var8 - var1) - var5) % 7;
  93.          }
  94.  
  95.          if (var1 < var9) {
  96.             return -1;
  97.          } else if (var1 > var9) {
  98.             return 1;
  99.          } else if (var3 < var7) {
  100.             return -1;
  101.          } else {
  102.             return var3 > var7 ? 1 : 0;
  103.          }
  104.       }
  105.    }
  106.  
  107.    public int getRawOffset() {
  108.       return this.rawOffset;
  109.    }
  110.  
  111.    public void setRawOffset(int var1) {
  112.       this.rawOffset = var1;
  113.    }
  114.  
  115.    public boolean useDaylightTime() {
  116.       return this.useDaylight;
  117.    }
  118.  
  119.    public boolean inDaylightTime(Date var1) {
  120.       GregorianCalendar var2 = new GregorianCalendar(this);
  121.       ((Calendar)var2).setTime(var1);
  122.       return var2.inDaylightTime();
  123.    }
  124.  
  125.    public Object clone() {
  126.       return super.clone();
  127.    }
  128.  
  129.    public synchronized int hashCode() {
  130.       return this.startMonth ^ this.startDay ^ this.startDayOfWeek ^ this.startTime ^ this.endMonth ^ this.endDay ^ this.endDayOfWeek ^ this.endTime ^ this.rawOffset;
  131.    }
  132.  
  133.    public boolean equals(Object var1) {
  134.       if (this == var1) {
  135.          return true;
  136.       } else if (!(var1 instanceof SimpleTimeZone)) {
  137.          return false;
  138.       } else {
  139.          SimpleTimeZone var2 = (SimpleTimeZone)var1;
  140.          if (!((TimeZone)this).getID().equals(((TimeZone)var2).getID())) {
  141.             return false;
  142.          } else if (this.startMonth != var2.startMonth) {
  143.             return false;
  144.          } else if (this.startDay != var2.startDay) {
  145.             return false;
  146.          } else if (this.startDayOfWeek != var2.startDayOfWeek) {
  147.             return false;
  148.          } else if (this.startTime != var2.startTime) {
  149.             return false;
  150.          } else if (this.endMonth != var2.endMonth) {
  151.             return false;
  152.          } else if (this.endDay != var2.endDay) {
  153.             return false;
  154.          } else if (this.endDayOfWeek != var2.endDayOfWeek) {
  155.             return false;
  156.          } else if (this.endTime != var2.endTime) {
  157.             return false;
  158.          } else if (this.startYear != var2.startYear) {
  159.             return false;
  160.          } else if (this.rawOffset != var2.rawOffset) {
  161.             return false;
  162.          } else {
  163.             return this.useDaylight == var2.useDaylight;
  164.          }
  165.       }
  166.    }
  167.  
  168.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  169.       var1.defaultReadObject();
  170.       if (this.startDayOfWeek == 0) {
  171.          this.startDayOfWeek = 1;
  172.       }
  173.  
  174.       if (this.endDayOfWeek == 0) {
  175.          this.endDayOfWeek = 1;
  176.       }
  177.  
  178.    }
  179. }
  180.