⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   */  public final void clear(int field)  {    int[] tempFields =                        {                         1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0,                         0, 0, zone.getRawOffset(), 0                       };    isTimeSet = false;    areFieldsSet = false;    isSet[field] = false;    fields[field] = tempFields[field];  }  /**   * Determines if the specified field has a valid value.   * @return true if the specified field has a value.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   */  public final boolean isSet(int field)  {    return isSet[field];  }  /**   * Fills any unset fields in the time field list   */  protected void complete()  {    if (! isTimeSet)      computeTime();    if (! areFieldsSet)      computeFields();  }  /**   * Compares the given calendar with this.   * @param o the object to that we should compare.   * @return true, if the given object is a calendar, that represents   * the same time (but doesn't necessary have the same fields).   */  public boolean equals(Object o)  {    if (! (o instanceof Calendar))      return false;    Calendar cal = (Calendar) o;    if (getTimeInMillis() == ((Calendar) o).getTimeInMillis()        && cal.getFirstDayOfWeek() == getFirstDayOfWeek()        && cal.isLenient() == isLenient()        && cal.getMinimalDaysInFirstWeek() == getMinimalDaysInFirstWeek())      {        TimeZone self = getTimeZone();        TimeZone oth = cal.getTimeZone();        return self == null ? oth == null : self.equals(oth);      }    return false;  }  /**   * Returns a hash code for this calendar.   * @return a hash code, which fullfits the general contract of   * <code>hashCode()</code>   */  public int hashCode()  {    long time = getTimeInMillis();    int val = (int) ((time & 0xffffffffL) ^ (time >> 32));    val += (getFirstDayOfWeek() + (isLenient() ? 1230 : 1237)            + getMinimalDaysInFirstWeek());    TimeZone self = getTimeZone();    if (self != null)      val ^= self.hashCode();    return val;  }  /**   * Compares the given calendar with this.   * @param o the object to that we should compare.   * @return true, if the given object is a calendar, and this calendar   * represents a smaller time than the calendar o.   * @exception ClassCastException if o is not an calendar.   * @since JDK1.2 you don't need to override this method   */  public boolean before(Object o)  {    return getTimeInMillis() < ((Calendar) o).getTimeInMillis();  }  /**   * Compares the given calendar with this.   * @param o the object to that we should compare.   * @return true, if the given object is a calendar, and this calendar   * represents a bigger time than the calendar o.   * @exception ClassCastException if o is not an calendar.   * @since JDK1.2 you don't need to override this method   */  public boolean after(Object o)  {    return getTimeInMillis() > ((Calendar) o).getTimeInMillis();  }  /**   * Adds the specified amount of time to the given time field.  The   * amount may be negative to subtract the time.  If the field overflows   * it does what you expect: Jan, 25 + 10 Days is Feb, 4.   * @param field the time field. One of the time field constants.   * @param amount the amount of time.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   */  public abstract void add(int field, int amount);  /**   * Rolls the specified time field up or down.  This means add one   * to the specified field, but don't change the other fields.  If   * the maximum for this field is reached, start over with the   * minimum value.  <br>   *   * <strong>Note:</strong> There may be situation, where the other   * fields must be changed, e.g rolling the month on May, 31.   * The date June, 31 is automatically converted to July, 1.   * @param field the time field. One of the time field constants.   * @param up the direction, true for up, false for down.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   */  public abstract void roll(int field, boolean up);  /**   * Rolls up or down the specified time field by the given amount.   * A negative amount rolls down.  The default implementation is   * call <code>roll(int, boolean)</code> for the specified amount.   *   * Subclasses should override this method to do more intuitiv things.   *   * @param field the time field. One of the time field constants.   * @param amount the amount to roll by, positive for rolling up,   * negative for rolling down.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   * @since JDK1.2   */  public void roll(int field, int amount)  {    while (amount > 0)      {	roll(field, true);	amount--;      }    while (amount < 0)      {	roll(field, false);	amount++;      }  }  /**   * Sets the time zone to the specified value.   * @param zone the new time zone   */  public void setTimeZone(TimeZone zone)  {    this.zone = zone;  }  /**   * Gets the time zone of this calendar   * @return the current time zone.   */  public TimeZone getTimeZone()  {    return zone;  }  /**   * Specifies if the date/time interpretation should be lenient.   * If the flag is set, a date such as "February 30, 1996" will be   * treated as the 29th day after the February 1.  If this flag   * is false, such dates will cause an exception.   * @param lenient true, if the date should be interpreted linient,   * false if it should be interpreted strict.   */  public void setLenient(boolean lenient)  {    this.lenient = lenient;  }  /**   * Tells if the date/time interpretation is lenient.   * @return true, if the date should be interpreted linient,   * false if it should be interpreted strict.   */  public boolean isLenient()  {    return lenient;  }  /**   * Sets what the first day of week is.  This is used for   * WEEK_OF_MONTH and WEEK_OF_YEAR fields.   * @param value the first day of week.  One of SUNDAY to SATURDAY.   */  public void setFirstDayOfWeek(int value)  {    firstDayOfWeek = value;  }  /**   * Gets what the first day of week is.  This is used for   * WEEK_OF_MONTH and WEEK_OF_YEAR fields.   * @return the first day of week.  One of SUNDAY to SATURDAY.   */  public int getFirstDayOfWeek()  {    return firstDayOfWeek;  }  /**   * Sets how many days are required in the first week of the year.   * If the first day of the year should be the first week you should   * set this value to 1.  If the first week must be a full week, set   * it to 7.   * @param value the minimal days required in the first week.   */  public void setMinimalDaysInFirstWeek(int value)  {    minimalDaysInFirstWeek = value;  }  /**   * Gets how many days are required in the first week of the year.   * @return the minimal days required in the first week.   * @see #setMinimalDaysInFirstWeek   */  public int getMinimalDaysInFirstWeek()  {    return minimalDaysInFirstWeek;  }  /**   * Gets the smallest value that is allowed for the specified field.   * @param field the time field. One of the time field constants.   * @return the smallest value.   */  public abstract int getMinimum(int field);  /**   * Gets the biggest value that is allowed for the specified field.   * @param field the time field. One of the time field constants.   * @return the biggest value.   */  public abstract int getMaximum(int field);  /**   * Gets the greatest minimum value that is allowed for the specified field.   * @param field the time field. One of the time field constants.   * @return the greatest minimum value.   */  public abstract int getGreatestMinimum(int field);  /**   * Gets the smallest maximum value that is allowed for the   * specified field.  For example this is 28 for DAY_OF_MONTH.   * @param field the time field. One of the time field constants.   * @return the least maximum value.   */  public abstract int getLeastMaximum(int field);  /**   * Gets the actual minimum value that is allowed for the specified field.   * This value is dependent on the values of the other fields.   * @param field the time field. One of the time field constants.   * @return the actual minimum value.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   * @since jdk1.2   */  public int getActualMinimum(int field)  {    Calendar tmp = (Calendar) clone(); // To avoid restoring state    int min = tmp.getGreatestMinimum(field);    int end = tmp.getMinimum(field);    tmp.set(field, min);    for (; min > end; min--)      {	tmp.add(field, -1); // Try to get smaller	if (tmp.get(field) != min - 1)	  break; // Done if not successful      }    return min;  }  /**   * Gets the actual maximum value that is allowed for the specified field.   * This value is dependent on the values of the other fields.   * @param field the time field. One of the time field constants.   * @return the actual maximum value.   * @throws ArrayIndexOutOfBoundsException if the field is outside   *         the valid range.  The value of field must be >= 0 and   *         <= <code>FIELD_COUNT</code>.   * @since jdk1.2   */  public int getActualMaximum(int field)  {    Calendar tmp = (Calendar) clone(); // To avoid restoring state    int max = tmp.getLeastMaximum(field);    int end = tmp.getMaximum(field);    tmp.set(field, max);    for (; max < end; max++)      {	tmp.add(field, 1);	if (tmp.get(field) != max + 1)	  break;      }    return max;  }  /**   * Return a clone of this object.   */  public Object clone()  {    try      {	Calendar cal = (Calendar) super.clone();	cal.fields = (int[]) fields.clone();	cal.isSet = (boolean[]) isSet.clone();	return cal;      }    catch (CloneNotSupportedException ex)      {	return null;      }  }  private static final String[] fieldNames =                                              {                                               ",ERA=", ",YEAR=", ",MONTH=",                                               ",WEEK_OF_YEAR=",                                               ",WEEK_OF_MONTH=",                                               ",DAY_OF_MONTH=",                                               ",DAY_OF_YEAR=", ",DAY_OF_WEEK=",                                               ",DAY_OF_WEEK_IN_MONTH=",                                               ",AM_PM=", ",HOUR=",                                               ",HOUR_OF_DAY=", ",MINUTE=",                                               ",SECOND=", ",MILLISECOND=",                                               ",ZONE_OFFSET=", ",DST_OFFSET="                                             };  /**   * Returns a string representation of this object.  It is mainly   * for debugging purposes and its content is implementation   * specific.   */  public String toString()  {    StringBuffer sb = new StringBuffer();    sb.append(getClass().getName()).append('[');    sb.append("time=");    if (isTimeSet)      sb.append(time);    else      sb.append("?");    sb.append(",zone=" + zone);    sb.append(",areFieldsSet=" + areFieldsSet);    for (int i = 0; i < FIELD_COUNT; i++)      {	sb.append(fieldNames[i]);	if (isSet[i])	  sb.append(fields[i]);	else	  sb.append("?");      }    sb.append(",lenient=").append(lenient);    sb.append(",firstDayOfWeek=").append(firstDayOfWeek);    sb.append(",minimalDaysInFirstWeek=").append(minimalDaysInFirstWeek);    sb.append("]");    return sb.toString();  }  /**   * Saves the state of the object to the stream.  Ideally we would   * only write the time field, but we need to be compatible with   * earlier versions. <br>   *   * This doesn't write the JDK1.1 field nextStamp to the stream, as   * I don't know what it is good for, and because the documentation   * says, that it could be omitted.  */  private void writeObject(ObjectOutputStream stream) throws IOException  {    if (! isTimeSet)      computeTime();    stream.defaultWriteObject();  }  /**   * Reads the object back from stream (deserialization).   */  private void readObject(ObjectInputStream stream)    throws IOException, ClassNotFoundException  {    stream.defaultReadObject();    if (! isTimeSet)      computeTime();    if (serialVersionOnStream > 1)      {	// This is my interpretation of the serial number:	// Sun wants to remove all fields from the stream someday	// and will then increase the serialVersion number again.	// We prepare to be compatible.	fields = new int[FIELD_COUNT];	isSet = new boolean[FIELD_COUNT];	areFieldsSet = false;      }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -