summaryrefslogtreecommitdiffstats
path: root/libjava/java/text/DateFormat.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/text/DateFormat.java')
-rw-r--r--libjava/java/text/DateFormat.java322
1 files changed, 289 insertions, 33 deletions
diff --git a/libjava/java/text/DateFormat.java b/libjava/java/text/DateFormat.java
index 604a1d5b2e5..0e84f87ac33 100644
--- a/libjava/java/text/DateFormat.java
+++ b/libjava/java/text/DateFormat.java
@@ -1,10 +1,29 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
+/* DateFormat.java -- Class for formatting/parsing date/times
+ Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- This file is part of libgcj.
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
package java.text;
@@ -25,35 +44,60 @@ public abstract class DateFormat extends Format implements Cloneable
protected NumberFormat numberFormat;
// (Values determined using a test program.)
- public final static int FULL = 0;
- public final static int LONG = 1;
- public final static int MEDIUM = 2;
- public final static int SHORT = 3;
- public final static int DEFAULT = MEDIUM;
-
- public final static int ERA_FIELD = 0;
- public final static int YEAR_FIELD = 1;
- public final static int MONTH_FIELD = 2;
- public final static int DATE_FIELD = 3;
- public final static int HOUR_OF_DAY1_FIELD = 4;
- public final static int HOUR_OF_DAY0_FIELD = 5;
- public final static int MINUTE_FIELD = 6;
- public final static int SECOND_FIELD = 7;
- public final static int MILLISECOND_FIELD = 8;
- public final static int DAY_OF_WEEK_FIELD = 9;
- public final static int DAY_OF_YEAR_FIELD = 10;
- public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
- public final static int WEEK_OF_YEAR_FIELD = 12;
- public final static int WEEK_OF_MONTH_FIELD = 13;
- public final static int AM_PM_FIELD = 14;
- public final static int HOUR1_FIELD = 15;
- public final static int HOUR0_FIELD = 16;
- public final static int TIMEZONE_FIELD = 17;
-
+ public static final int FULL = 0;
+ public static final int LONG = 1;
+ public static final int MEDIUM = 2;
+ public static final int SHORT = 3;
+ public static final int DEFAULT = MEDIUM;
+
+ /* These constants need to have these exact values. They
+ * correspond to index positions within the localPatternChars
+ * string for a given locale. For example, the US locale uses
+ * the string "GyMdkHmsSEDFwWahKz", where 'G' is the character
+ * for era, 'y' for year, and so on down to 'z' for time zone.
+ */
+ public static final int ERA_FIELD = 0;
+ public static final int YEAR_FIELD = 1;
+ public static final int MONTH_FIELD = 2;
+ public static final int DATE_FIELD = 3;
+ public static final int HOUR_OF_DAY1_FIELD = 4;
+ public static final int HOUR_OF_DAY0_FIELD = 5;
+ public static final int MINUTE_FIELD = 6;
+ public static final int SECOND_FIELD = 7;
+ public static final int MILLISECOND_FIELD = 8;
+ public static final int DAY_OF_WEEK_FIELD = 9;
+ public static final int DAY_OF_YEAR_FIELD = 10;
+ public static final int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+ public static final int WEEK_OF_YEAR_FIELD = 12;
+ public static final int WEEK_OF_MONTH_FIELD = 13;
+ public static final int AM_PM_FIELD = 14;
+ public static final int HOUR1_FIELD = 15;
+ public static final int HOUR0_FIELD = 16;
+ public static final int TIMEZONE_FIELD = 17;
+
+ /**
+ * This method initializes a new instance of <code>DateFormat</code>.
+ */
protected DateFormat ()
{
}
+ /**
+ * This method tests this object for equality against the specified object.
+ * The two objects will be considered equal if an only if the specified
+ * object:
+ * <P>
+ * <ul>
+ * <li>Is not <code>null</code>.
+ * <li>Is an instance of <code>DateFormat</code>.
+ * <li>Has the same calendar and numberFormat field values as this object.
+ * </ul>
+ *
+ * @param obj The object to test for equality against.
+ *
+ * @return <code>true</code> if the specified object is equal to this object,
+ * <code>false</code> otherwise.
+ */
public boolean equals (Object obj)
{
if (! (obj instanceof DateFormat))
@@ -62,20 +106,46 @@ public abstract class DateFormat extends Format implements Cloneable
return calendar.equals(d.calendar) && numberFormat.equals(d.numberFormat);
}
+ /**
+ * This method returns a copy of this object.
+ *
+ * @return A copy of this object.
+ */
public Object clone ()
{
// We know the superclass just call's Object's generic cloner.
return super.clone ();
}
+ /**
+ * This method formats the specified <code>Object</code> into a date string
+ * and appends it to the specified <code>StringBuffer</code>.
+ * The specified object must be an instance of <code>Number</code> or
+ * <code>Date</code> or an <code>IllegalArgumentException</code> will be
+ * thrown.
+ *
+ * @param obj The <code>Object</code> to format.
+ * @param toAppendTo The <code>StringBuffer</code> to append the resultant
+ * <code>String</code> to.
+ * @param fieldPosition Is updated to the start and end index of the
+ * specified field.
+ *
+ * @return The <code>StringBuffer</code> supplied on input, with the
+ * formatted date/time appended.
+ */
public final StringBuffer format (Object obj,
StringBuffer buf, FieldPosition pos)
{
if (obj instanceof Number)
- return format (new Date(((Number) obj).longValue()), buf, pos);
+ obj = new Date(((Number) obj).longValue());
return format ((Date) obj, buf, pos);
}
+ /**
+ * Formats the date argument according to the pattern specified.
+ *
+ * @param date The formatted date.
+ */
public final String format (Date date)
{
StringBuffer sb = new StringBuffer ();
@@ -83,14 +153,42 @@ public abstract class DateFormat extends Format implements Cloneable
return sb.toString();
}
+ /**
+ * This method formats a <code>Date</code> into a string and appends it
+ * to the specified <code>StringBuffer</code>.
+ *
+ * @param date The <code>Date</code> value to format.
+ * @param toAppendTo The <code>StringBuffer</code> to append the resultant
+ * <code>String</code> to.
+ * @param fieldPosition Is updated to the start and end index of the
+ * specified field.
+ *
+ * @return The <code>StringBuffer</code> supplied on input, with the
+ * formatted date/time appended.
+ */
public abstract StringBuffer format (Date date,
StringBuffer buf, FieldPosition pos);
+ /**
+ * This method returns a list of available locales supported by this
+ * class.
+ */
public static Locale[] getAvailableLocales ()
{
- return null; // FIXME
+ // FIXME
+ Locale[] l = new Locale[1];
+ l[0] = Locale.US;
+ return l;
}
+ /**
+ * This method returns the <code>Calendar</code> object being used by
+ * this object to parse/format datetimes.
+ *
+ * @return The <code>Calendar</code> being used by this object.
+ *
+ * @see java.util.Calendar
+ */
public Calendar getCalendar ()
{
return calendar;
@@ -112,7 +210,8 @@ public abstract class DateFormat extends Format implements Cloneable
ResourceBundle res;
try
{
- res = ResourceBundle.getBundle("gnu.gcj.text.LocaleData", loc);
+ res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
+ loc);
}
catch (MissingResourceException x)
{
@@ -199,32 +298,77 @@ public abstract class DateFormat extends Format implements Cloneable
return new SimpleDateFormat (pattern, loc);
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the default formatting style for dates.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getDateInstance ()
{
return getDateInstance (DEFAULT, Locale.getDefault());
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the specified formatting style for dates.
+ *
+ * @param style The type of formatting to perform.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getDateInstance (int style)
{
return getDateInstance (style, Locale.getDefault());
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the specified formatting style for dates. The specified
+ * localed will be used in place of the default.
+ *
+ * @param style The type of formatting to perform.
+ * @param aLocale The desired locale.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getDateInstance (int style, Locale loc)
{
return computeInstance (style, loc, true, false);
}
+ /**
+ * This method returns a new instance of <code>DateFormat</code> that
+ * formats both dates and times using the <code>SHORT</code> style.
+ *
+ * @return A new <code>DateFormat</code>instance.
+ */
public static final DateFormat getDateTimeInstance ()
{
return getDateTimeInstance (DEFAULT, DEFAULT, Locale.getDefault());
}
+ /**
+ * This method returns a new instance of <code>DateFormat</code> that
+ * formats both dates and times using the <code>DEFAULT</code> style.
+ *
+ * @return A new <code>DateFormat</code>instance.
+ */
public static final DateFormat getDateTimeInstance (int dateStyle,
int timeStyle)
{
return getDateTimeInstance (dateStyle, timeStyle, Locale.getDefault());
}
+ /**
+ * This method returns a new instance of <code>DateFormat</code> that
+ * formats both dates and times using the specified styles.
+ *
+ * @param dateStyle The desired style for date formatting.
+ * @param timeStyle The desired style for time formatting
+ *
+ * @return A new <code>DateFormat</code>instance.
+ */
public static final DateFormat getDateTimeInstance (int dateStyle,
int timeStyle,
Locale loc)
@@ -232,37 +376,84 @@ public abstract class DateFormat extends Format implements Cloneable
return computeInstance (dateStyle, timeStyle, loc, true, true);
}
+ /**
+ * This method returns a new instance of <code>DateFormat</code> that
+ * formats both dates and times using the <code>SHORT</code> style.
+ *
+ * @return A new <code>DateFormat</code>instance.
+ */
public static final DateFormat getInstance ()
{
// JCL book says SHORT.
return getDateTimeInstance (SHORT, SHORT, Locale.getDefault());
}
+ /**
+ * This method returns the <code>NumberFormat</code> object being used
+ * by this object to parse/format time values.
+ *
+ * @return The <code>NumberFormat</code> in use by this object.
+ */
public NumberFormat getNumberFormat ()
{
return numberFormat;
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the default formatting style for times.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getTimeInstance ()
{
return getTimeInstance (DEFAULT, Locale.getDefault());
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the specified formatting style for times.
+ *
+ * @param style The type of formatting to perform.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getTimeInstance (int style)
{
return getTimeInstance (style, Locale.getDefault());
}
+ /**
+ * This method returns an instance of <code>DateFormat</code> that will
+ * format using the specified formatting style for times. The specified
+ * localed will be used in place of the default.
+ *
+ * @param style The type of formatting to perform.
+ * @param aLocale The desired locale.
+ *
+ * @return A new <code>DateFormat</code> instance.
+ */
public static final DateFormat getTimeInstance (int style, Locale loc)
{
return computeInstance (style, loc, false, true);
}
+ /**
+ * This method returns the <code>TimeZone</code> object being used by
+ * this instance.
+ *
+ * @return The time zone in use.
+ */
public TimeZone getTimeZone ()
{
return calendar.getTimeZone();
}
+ /**
+ * This method returns a hash value for this object.
+ *
+ * @return A hash value for this object.
+ */
public int hashCode ()
{
int hash = calendar.hashCode();
@@ -271,11 +462,25 @@ public abstract class DateFormat extends Format implements Cloneable
return hash;
}
+ /**
+ * This method indicates whether or not the parsing of date and time
+ * values should be done in a lenient value.
+ *
+ * @return <code>true</code> if date/time parsing is lenient,
+ * <code>false</code> otherwise.
+ */
public boolean isLenient ()
{
return calendar.isLenient();
}
+ /**
+ * This method parses the specified date/time string.
+ *
+ * @return The resultant date.
+ *
+ * @exception ParseException If the specified string cannot be parsed.
+ */
public Date parse (String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
@@ -290,28 +495,79 @@ public abstract class DateFormat extends Format implements Cloneable
return result;
}
+ /**
+ * This method parses the specified <code>String</code> into a
+ * <code>Date</code>. The <code>pos</code> argument contains the
+ * starting parse position on method entry and the ending parse
+ * position on method exit.
+ *
+ * @param text The string to parse.
+ * @param pos The starting parse position in entry, the ending parse
+ * position on exit.
+ *
+ * @return The parsed date, or <code>null</code> if the string cannot
+ * be parsed.
+ */
public abstract Date parse (String source, ParsePosition pos);
+ /**
+ * This method is identical to <code>parse(String, ParsePosition)</code>,
+ * but returns its result as an <code>Object</code> instead of a
+ * <code>Date</code>.
+ *
+ * @param source The string to parse.
+ * @param pos The starting parse position in entry, the ending parse
+ * position on exit.
+ *
+ * @return The parsed date, or <code>null</code> if the string cannot
+ * be parsed.
+ */
public Object parseObject (String source, ParsePosition pos)
{
return parse(source, pos);
}
+ /**
+ * This method specified the <code>Calendar</code> that should be used
+ * by this object to parse/format datetimes.
+ *
+ * @param The new <code>Calendar</code> for this object.
+ *
+ * @see java.util.Calendar
+ */
public void setCalendar (Calendar calendar)
{
this.calendar = calendar;
}
+ /**
+ * This method specifies whether or not this object should be lenient in
+ * the syntax it accepts while parsing date/time values.
+ *
+ * @param lenient <code>true</code> if parsing should be lenient,
+ * <code>false</code> otherwise.
+ */
public void setLenient (boolean lenient)
{
calendar.setLenient(lenient);
}
+ /**
+ * This method specifies the <code>NumberFormat</code> object that should
+ * be used by this object to parse/format times.
+ *
+ * @param The <code>NumberFormat</code> in use by this object.
+ */
public void setNumberFormat (NumberFormat numberFormat)
{
this.numberFormat = numberFormat;
}
+ /**
+ * This method sets the time zone that should be used by this object.
+ *
+ * @param The new time zone.
+ */
public void setTimeZone (TimeZone timeZone)
{
calendar.setTimeZone(timeZone);
OpenPOWER on IntegriCloud