aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/util/Calendar.java
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>1999-04-07 14:42:40 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-04-07 14:42:40 +0000
commitee9dd3721be68b9fa63dea9aa5a1d86e66958cde (patch)
treed96801a16fdf03a5682ef98730fe333a46eef944 /libjava/java/util/Calendar.java
parent140fa895c6b859f827fc4437b91775a82cd105fb (diff)
downloadgcc-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.java258
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]; }
+}