diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
commit | ee9dd3721be68b9fa63dea9aa5a1d86e66958cde (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/java/util/Calendar.java | |
parent | 140fa895c6b859f827fc4437b91775a82cd105fb (diff) | |
download | gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.zip gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.gz gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.bz2 |
Initial revision
From-SVN: r26263
Diffstat (limited to 'libjava/java/util/Calendar.java')
-rw-r--r-- | libjava/java/util/Calendar.java | 258 |
1 files changed, 258 insertions, 0 deletions
diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java new file mode 100644 index 0000000..8649adf --- /dev/null +++ b/libjava/java/util/Calendar.java @@ -0,0 +1,258 @@ +/* Copyright (C) 1998, 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.util; + +/** + * @author Per Bothner <bothner@cygnus.com> + * @date October 24, 1998. + */ + +/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3, + * and "The Java Language Specification", ISBN 0-201-63451-1. + * Status: Unimplemented: getAvailableLocales. + * No Locale knowledge. + */ + +public abstract class Calendar implements java.io.Serializable, Cloneable +{ + public final static int JANUARY = 0; + public final static int FEBRUARY = 1; + public final static int MARCH = 2; + public final static int APRIL = 3; + public final static int MAY = 4; + public final static int JUNE = 5; + public final static int JULY = 6; + public final static int AUGUST = 7; + public final static int SEPTEMBER = 8; + public final static int OCTOBER = 9; + public final static int NOVEMBER = 10; + public final static int DECEMBER = 11; + public final static int UNDECIMBER = 12; + + public final static int SUNDAY = 1; + public final static int MONDAY = 2; + public final static int TUESDAY = 3; + public final static int WEDNESDAY = 4; + public final static int THURSDAY = 5; + public final static int FRIDAY = 6; + public final static int SATURDAY = 7; + + public final static int AM = 0; + public final static int PM = 1; + + public final static int FIELD_COUNT = 17; + + // These constants are not docuemnted, but were determined using + // a simple test program. + public final static int ERA = 0; + public final static int YEAR = 1; + public final static int MONTH = 2; + public final static int WEEK_OF_YEAR = 3; + public final static int WEEK_OF_MONTH = 4; + public final static int DATE = 5; + public final static int DAY_OF_MONTH = 5; + public final static int DAY_OF_YEAR = 6; + public final static int DAY_OF_WEEK = 7; + public final static int DAY_OF_WEEK_IN_MONTH = 8; + public final static int AM_PM = 9; + public final static int HOUR = 10; + public final static int HOUR_OF_DAY = 11; + public final static int MINUTE = 12; + public final static int SECOND = 13; + public final static int MILLISECOND = 14; + public final static int ZONE_OFFSET = 15; + public final static int DST_OFFSET = 16; + + // The fields are as specified in Sun's "Serialized Form" + // in the JDK 1.2 beta 4 API specification. + protected boolean areFieldsSet; + protected int[] fields; + private int firstDayOfWeek; + protected boolean[] isSet; + protected boolean isTimeSet; + private boolean lenient; + private int minimalDaysInFirstWeek; + private int nextStamp; + //private int serialVersionOnStream; + protected long time; + private TimeZone zone; + + protected Calendar () + { + this (null, null); + } + + protected Calendar (TimeZone tx, Locale loc) + { + fields = new int[FIELD_COUNT]; + isSet = new boolean[FIELD_COUNT]; + firstDayOfWeek = SUNDAY; // Locale-dependent. FIXME. + this.zone = zone != null ? zone : TimeZone.getDefault(); + } + + public Object clone () + { + try + { + return super.clone(); + } + catch (CloneNotSupportedException ex) + { + throw new RuntimeException("internal error - "+ex); + } + } + + public static Calendar getInstance () + { + return new GregorianCalendar (); + } + + public static Calendar getInstance (TimeZone zone) + { + return new GregorianCalendar (zone); + } + + public static Calendar getInstance (Locale locale) + { + return new GregorianCalendar (locale); + } + + public static Calendar getInstance (TimeZone zone, Locale locale) + { + return new GregorianCalendar (zone, locale); + } + + public boolean isLenient() { return lenient; } + public void setLenient (boolean lenient) { this.lenient = lenient; } + + public int getFirstDayOfWeek () + { + return firstDayOfWeek; + } + + public void setFirstDayOfWeek (int value) + { + firstDayOfWeek = value; + } + + public int getMinimalDaysInFirstWeek () + { + return minimalDaysInFirstWeek; + } + + public void setMinimalDaysInFirstWeek (int value) + { + minimalDaysInFirstWeek = value; + } + + public TimeZone getTimeZone () + { + return zone; + } + + public void setTimeZone (TimeZone tz) + { + zone = tz; + } + + abstract public void add(int fld, int amount); + abstract public void roll (int fld, boolean up); + + public final void set (int year, int month, int date) + { + set(YEAR, year); + set(MONTH, month); + set(DATE, date); + } + + public final void set (int year, int month, int date, int hour, int minute) + { + set(year, month, date); + set(HOUR_OF_DAY, hour); + set(MINUTE, minute); + } + + public final void set (int year, int month, int date, + int hour, int minute, int second) + { + set(year, month, date, hour, minute); + set(SECOND, second); + } + + public final void set (int fld, int value) + { + fields[fld] = value; + isTimeSet = false; + } + + public final void clear (int fld) + { + fields[fld] = 0; + isSet[fld] = false; + areFieldsSet = false; + } + + public final void clear () + { + for (int fld = FIELD_COUNT; --fld >= 0; ) + { + fields[fld] = 0; + isSet[fld] = false; + } + areFieldsSet = false; + } + + protected void complete() + { + if (!isTimeSet) computeTime(); + if (!areFieldsSet) computeFields(); + } + + protected abstract void computeFields(); + protected abstract void computeTime(); + + protected final int internalGet (int fld) { return fields[fld]; } + + public final int get(int fld) + { + complete(); + return fields[fld]; + } + + public abstract boolean after (Object cal); + public abstract boolean before (Object cal); + public abstract boolean equals (Object obj); + + protected long getTimeInMillis() + { + if (!isTimeSet) computeTime(); + return time; + } + + public final Date getTime() { return new Date(getTimeInMillis()); } + + public final void setTime (Date date) + { + setTimeInMillis(date.getTime()); + } + + protected void setTimeInMillis (long millis) + { + time = millis; + isTimeSet = true; + clear(); + } + + abstract public int getMaximum(int fld); + abstract public int getMinimum(int fld); + abstract public int getGreatestMinimum(int fld); + abstract public int getLeastMaximum(int fld); + + public final boolean isSet(int fld) { return isSet[fld]; } +} |