re PR libgcj/3144 (java.lang.Date.compareTo() not supported)
Fix for PR libgcj/3144: * java/util/Date.java: Merged with Classpath. From-SVN: r43374
This commit is contained in:
parent
e323735cb2
commit
fc07ebe2a7
2 changed files with 417 additions and 145 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2001-06-14 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
Fix for PR libgcj/3144:
|
||||||
|
* java/util/Date.java: Merged with Classpath.
|
||||||
|
|
||||||
2001-06-12 Tom Tromey <tromey@redhat.com>
|
2001-06-12 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* aclocal.m4, configure: Rebuilt.
|
* aclocal.m4, configure: Rebuilt.
|
||||||
|
|
|
@ -1,52 +1,296 @@
|
||||||
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
|
/* java.util.Date
|
||||||
|
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.util;
|
package java.util;
|
||||||
import java.text.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* This class represents a specific time in milliseconds since the epoch.
|
||||||
|
* The epoch is 1970, January 1 00:00:00.0000 UTC.
|
||||||
|
*
|
||||||
|
* Date is intended to reflect universal time coordinate (UTC), but doesn't
|
||||||
|
* handle the leap seconds.
|
||||||
|
*
|
||||||
|
* Prior to jdk 1.1 this class was the sole Time class and had also
|
||||||
|
* calendar functionality. But this can't be localized, so a new Calendar
|
||||||
|
* class was created, that you should use instead. The functions which
|
||||||
|
* get or return a year, month, day etc. are all deprecated and shouldn't be
|
||||||
|
* used. Use Calendar instead.
|
||||||
|
*
|
||||||
|
* @see Calendar
|
||||||
|
* @see GregorianCalendar
|
||||||
|
* @see java.text.DateFormat
|
||||||
|
* @author Jochen Hoenicke
|
||||||
* @author Per Bothner <bothner@cygnus.com>
|
* @author Per Bothner <bothner@cygnus.com>
|
||||||
* @date October 24, 1998.
|
|
||||||
*/
|
*/
|
||||||
|
public class Date implements Cloneable, Comparable, java.io.Serializable
|
||||||
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3,
|
|
||||||
* "The Java Language Specification", ISBN 0-201-63451-1,
|
|
||||||
* and O'Reilly's "Java in a Nutshell".
|
|
||||||
* Status: Need to re-write toString().
|
|
||||||
* Missing: ToGMTString.
|
|
||||||
*/
|
|
||||||
public class Date implements java.io.Serializable, Cloneable
|
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* This is the serialization UID for this class
|
||||||
|
*/
|
||||||
private static final long serialVersionUID = 7523967970034938905L;
|
private static final long serialVersionUID = 7523967970034938905L;
|
||||||
|
|
||||||
transient private long millis;
|
/**
|
||||||
|
* The time in milliseconds since the epoch.
|
||||||
|
*/
|
||||||
|
private transient long time;
|
||||||
|
|
||||||
public Date() { millis = System.currentTimeMillis(); }
|
/**
|
||||||
|
* Creates a new Date Object representing the current time.
|
||||||
public Date(long millis) { this.millis = millis; }
|
*/
|
||||||
|
public Date()
|
||||||
public Date(int year, int month, int date, int hours,
|
|
||||||
int minutes, int seconds)
|
|
||||||
{
|
{
|
||||||
setTime(year, month, date, hours, minutes, seconds);
|
time = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date(int year, int month, int date, int hours, int minutes)
|
/**
|
||||||
|
* Creates a new Date Object representing the given time.
|
||||||
|
* @param time the time in milliseconds since the epoch.
|
||||||
|
*/
|
||||||
|
public Date(long time)
|
||||||
{
|
{
|
||||||
setTime(year, month, date, hours, minutes, 0);
|
this.time = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date(int year, int month, int date)
|
/**
|
||||||
|
* Creates a new Date Object representing the given time.
|
||||||
|
* @deprecated use <code>new GregorianCalendar(year+1900, month,
|
||||||
|
* day)</code> instead.
|
||||||
|
*/
|
||||||
|
public Date(int year, int month, int day)
|
||||||
{
|
{
|
||||||
setTime(year, month, date, 0, 0, 0);
|
time = new GregorianCalendar(year + 1900, month, day).getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date (String s) { this(parse(s)); }
|
/**
|
||||||
|
* Creates a new Date Object representing the given time.
|
||||||
|
* @deprecated use <code>new GregorianCalendar(year+1900, month,
|
||||||
|
* day, hour, min)</code> instead.
|
||||||
|
*/
|
||||||
|
public Date(int year, int month, int day, int hour, int min)
|
||||||
|
{
|
||||||
|
time =
|
||||||
|
new GregorianCalendar(year + 1900, month, day, hour,
|
||||||
|
min).getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a new Date Object representing the given time.
|
||||||
|
* @deprecated use <code>new GregorianCalendar(year+1900, month,
|
||||||
|
* day)</code> instead.
|
||||||
|
*/
|
||||||
|
public Date(int year, int month, int day, int hour, int min, int sec)
|
||||||
|
{
|
||||||
|
time =
|
||||||
|
new GregorianCalendar(year + 1900, month, day, hour, min,
|
||||||
|
sec).getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Date from the given string representation. This
|
||||||
|
* does the same as <code>new Date(Date.parse(s))</code>
|
||||||
|
* @see #parse
|
||||||
|
* @deprecated use <code>java.text.DateFormat.parse(s)</code> instead.
|
||||||
|
*/
|
||||||
|
public Date(String s)
|
||||||
|
{
|
||||||
|
time = parse(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object clone()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
catch (CloneNotSupportedException ex)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use Calendar with a UTC TimeZone instead.
|
||||||
|
* @return the time in millis since the epoch.
|
||||||
|
*/
|
||||||
|
public static long UTC(int year, int month, int date,
|
||||||
|
int hrs, int min, int sec)
|
||||||
|
{
|
||||||
|
GregorianCalendar cal =
|
||||||
|
new GregorianCalendar(year + 1900, month, date, hrs, min, sec);
|
||||||
|
cal.set(Calendar.ZONE_OFFSET, 0);
|
||||||
|
cal.set(Calendar.DST_OFFSET, 0);
|
||||||
|
return cal.getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the time represented by this Object
|
||||||
|
* @return the time in milliseconds since the epoch.
|
||||||
|
*/
|
||||||
|
public long getTime()
|
||||||
|
{
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use
|
||||||
|
* Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET)
|
||||||
|
* instead.
|
||||||
|
* @return The time zone offset in minutes of the local time zone
|
||||||
|
* relative to UTC. The time represented by this object is used to
|
||||||
|
* determine if we should use daylight savings.
|
||||||
|
*/
|
||||||
|
public int getTimezoneOffset()
|
||||||
|
{
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
return (cal.get(Calendar.ZONE_OFFSET)
|
||||||
|
+ cal.get(Calendar.DST_OFFSET)) / (60 * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the time which this Object should represented.
|
||||||
|
* @param time the time in milliseconds since the epoch. */
|
||||||
|
public void setTime(long time)
|
||||||
|
{
|
||||||
|
this.time = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests if this date is after the specified date.
|
||||||
|
* @param when the other date
|
||||||
|
* @return true, if the date represented by this Object is
|
||||||
|
* strictly later than the time represented by when.
|
||||||
|
*/
|
||||||
|
public boolean after(Date when)
|
||||||
|
{
|
||||||
|
return time > when.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests if this date is before the specified date.
|
||||||
|
* @param when the other date
|
||||||
|
* @return true, if the date represented by when is strictly later
|
||||||
|
* than the time represented by this object.
|
||||||
|
*/
|
||||||
|
public boolean before(Date when)
|
||||||
|
{
|
||||||
|
return time < when.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares two dates for equality.
|
||||||
|
* @param obj the object to compare.
|
||||||
|
* @return true, if obj is a Date object and the date represented
|
||||||
|
* by obj is exactly the same as the time represented by this
|
||||||
|
* object.
|
||||||
|
*/
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
return (obj instanceof Date && time == ((Date) obj).time);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares two dates.
|
||||||
|
* @param when the other date.
|
||||||
|
* @return 0, if the date represented
|
||||||
|
* by obj is exactly the same as the time represented by this
|
||||||
|
* object, a negative if this Date is before the other Date, and
|
||||||
|
* a positive value otherwise.
|
||||||
|
*/
|
||||||
|
public int compareTo(Date when)
|
||||||
|
{
|
||||||
|
return (time < when.time) ? -1 : (time == when.time) ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares this Date to another. This behaves like
|
||||||
|
* <code>compareTo(Date)</code>, but it may throw a
|
||||||
|
* <code>ClassCastException</code>
|
||||||
|
* @param obj the other date.
|
||||||
|
* @return 0, if the date represented
|
||||||
|
* by obj is exactly the same as the time represented by this
|
||||||
|
* object, a negative if this Date is before the other Date, and
|
||||||
|
* a positive value otherwise.
|
||||||
|
* @exception ClassCastException if obj is not of type Date.
|
||||||
|
*/
|
||||||
|
public int compareTo(Object obj)
|
||||||
|
{
|
||||||
|
return compareTo((Date) obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
return (int) time ^ (int) (time >>> 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] weekNames = { "Sun", "Mon", "Tue", "Wed",
|
||||||
|
"Thu", "Fri", "Sat" };
|
||||||
|
|
||||||
|
private String[] monthNames = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
String day = "0" + cal.get(Calendar.DATE);
|
||||||
|
String hour = "0" + cal.get(Calendar.HOUR_OF_DAY);
|
||||||
|
String min = "0" + cal.get(Calendar.MINUTE);
|
||||||
|
String sec = "0" + cal.get(Calendar.SECOND);
|
||||||
|
String year = "000" + cal.get(Calendar.YEAR);
|
||||||
|
return weekNames[cal.get(Calendar.DAY_OF_WEEK) - 1] + " "
|
||||||
|
+ monthNames[cal.get(Calendar.MONTH)] + " "
|
||||||
|
+ day.substring(day.length() - 2) + " "
|
||||||
|
+ hour.substring(hour.length() - 2) + ":"
|
||||||
|
+ min.substring(min.length() - 2) + ":"
|
||||||
|
+ sec.substring(sec.length() - 2) + " "
|
||||||
|
+
|
||||||
|
cal.getTimeZone().getDisplayName(cal.getTimeZone().inDaylightTime(this),
|
||||||
|
TimeZone.SHORT) + " " +
|
||||||
|
year.substring(year.length() - 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Format this object in a locale-specific way.
|
||||||
|
* @deprecated Use DateFormat.format(Date)
|
||||||
|
*/
|
||||||
|
public String toLocaleString()
|
||||||
|
{
|
||||||
|
return java.text.DateFormat.getInstance().format(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Format this object in a standard format in the GMT timezone.
|
||||||
|
* @deprecated Use DateFormat.format(Date) with a GMT TimeZone.
|
||||||
|
*/
|
||||||
|
public String toGMTString()
|
||||||
|
{
|
||||||
|
java.text.DateFormat format = java.text.DateFormat.getInstance();
|
||||||
|
format.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
return format.format(this);
|
||||||
|
}
|
||||||
|
|
||||||
private static int skipParens(String string, int offset)
|
private static int skipParens(String string, int offset)
|
||||||
{
|
{
|
||||||
|
@ -134,6 +378,10 @@ public class Date implements java.io.Serializable, Cloneable
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Parse a String and return the time it represents.
|
||||||
|
* @param s The String to parse.
|
||||||
|
* @deprecated Use DateFormat.parse(String)
|
||||||
|
*/
|
||||||
public static long parse(String string)
|
public static long parse(String string)
|
||||||
{
|
{
|
||||||
// Initialize date/time fields before parsing begins.
|
// Initialize date/time fields before parsing begins.
|
||||||
|
@ -331,164 +579,183 @@ public class Date implements java.io.Serializable, Cloneable
|
||||||
-timezone * 60 * 1000);
|
-timezone * 60 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean after (Date when) { return this.millis > when.millis; }
|
/**
|
||||||
public boolean before (Date when) { return this.millis < when.millis; }
|
* @return the year minus 1900 represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.YEAR)
|
||||||
public boolean equals(Object obj)
|
* instead. Note about the 1900 difference in year.
|
||||||
|
*/
|
||||||
|
public int getYear()
|
||||||
{
|
{
|
||||||
return (obj != null && obj instanceof Date
|
Calendar cal = Calendar.getInstance();
|
||||||
&& ((Date)obj).millis == this.millis);
|
cal.setTimeInMillis(time);
|
||||||
|
return cal.get(Calendar.YEAR) - 1900;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTime() { return millis; }
|
/**
|
||||||
|
* Sets the year to year minus 1900, not changing the other fields.
|
||||||
public int hashCode()
|
* @param year the year minus 1900.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.YEAR, year) instead. Note about the 1900
|
||||||
|
* difference in year.
|
||||||
|
*/
|
||||||
|
public void setYear(int year)
|
||||||
{
|
{
|
||||||
return (int)(millis^(millis>>>32));
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
cal.set(Calendar.YEAR, 1900 + year);
|
||||||
|
time = cal.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTime(int year, int month, int date,
|
/**
|
||||||
int hours, int minutes, int seconds)
|
* @return the month represented by this date object (zero based).
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.MONTH)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getMonth()
|
||||||
{
|
{
|
||||||
Calendar cal = new GregorianCalendar(year+1900, month, date,
|
Calendar cal = Calendar.getInstance();
|
||||||
hours, minutes, seconds);
|
cal.setTimeInMillis(time);
|
||||||
millis = cal.getTimeInMillis();
|
return cal.get(Calendar.MONTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTime(long millis) { this.millis = millis; }
|
/**
|
||||||
|
* Sets the month to the given value, not changing the other fields.
|
||||||
private int getField (int fld)
|
* @param month the month, zero based.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.MONTH, month) instead.
|
||||||
|
*/
|
||||||
|
public void setMonth(int month)
|
||||||
{
|
{
|
||||||
Calendar cal = new GregorianCalendar();
|
Calendar cal = Calendar.getInstance();
|
||||||
cal.setTime(this);
|
cal.setTimeInMillis(time);
|
||||||
return cal.get(fld);
|
cal.set(Calendar.MONTH, month);
|
||||||
|
time = cal.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getYear ()
|
/**
|
||||||
|
* @return the day of month represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.DATE)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getDate()
|
||||||
{
|
{
|
||||||
return getField(Calendar.YEAR) - 1900;
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
return cal.get(Calendar.DATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMonth ()
|
/**
|
||||||
|
* Sets the date to the given value, not changing the other fields.
|
||||||
|
* @param date the date.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.DATE, date) instead.
|
||||||
|
*/
|
||||||
|
public void setDate(int date)
|
||||||
{
|
{
|
||||||
return getField(Calendar.MONTH);
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
cal.set(Calendar.DATE, date);
|
||||||
|
time = cal.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDate ()
|
/**
|
||||||
|
* @return the day represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.DAY_OF_WEEK)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getDay()
|
||||||
{
|
{
|
||||||
return getField(Calendar.DATE);
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
return cal.get(Calendar.DAY_OF_WEEK);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDay ()
|
/**
|
||||||
|
* @return the hours represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.HOUR_OF_DAY)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getHours()
|
||||||
{
|
{
|
||||||
return getField(Calendar.DAY_OF_WEEK) - 1;
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
return cal.get(Calendar.HOUR_OF_DAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getHours ()
|
/**
|
||||||
|
* Sets the hours to the given value, not changing the other fields.
|
||||||
|
* @param hours the hours.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.HOUR_OF_DAY, hours) instead.
|
||||||
|
*/
|
||||||
|
public void setHours(int hours)
|
||||||
{
|
{
|
||||||
return getField(Calendar.HOUR_OF_DAY);
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
cal.set(Calendar.HOUR_OF_DAY, hours);
|
||||||
|
time = cal.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMinutes ()
|
/**
|
||||||
|
* @return the minutes represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.MINUTE)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getMinutes()
|
||||||
{
|
{
|
||||||
return getField(Calendar.MINUTE);
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
return cal.get(Calendar.MINUTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSeconds ()
|
/**
|
||||||
|
* Sets the minutes to the given value, not changing the other fields.
|
||||||
|
* @param minutes the minutes.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.MINUTE, minutes) instead.
|
||||||
|
*/
|
||||||
|
public void setMinutes(int minutes)
|
||||||
{
|
{
|
||||||
return getField(Calendar.SECOND);
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTimeInMillis(time);
|
||||||
|
cal.set(Calendar.MINUTE, minutes);
|
||||||
|
time = cal.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setField (int fld, int value)
|
/**
|
||||||
|
* @return the seconds represented by this date object.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use get(Calendar.SECOND)
|
||||||
|
* instead.
|
||||||
|
*/
|
||||||
|
public int getSeconds()
|
||||||
{
|
{
|
||||||
Calendar cal = new GregorianCalendar();
|
Calendar cal = Calendar.getInstance();
|
||||||
cal.setTime(this);
|
cal.setTimeInMillis(time);
|
||||||
cal.set(fld, value);
|
return cal.get(Calendar.SECOND);
|
||||||
millis = cal.getTimeInMillis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setYear (int year)
|
/**
|
||||||
|
* Sets the seconds to the given value, not changing the other fields.
|
||||||
|
* @param seconds the seconds.
|
||||||
|
* @deprecated Use Calendar instead of Date, and use
|
||||||
|
* set(Calendar.SECOND, seconds) instead.
|
||||||
|
*/
|
||||||
|
public void setSeconds(int seconds)
|
||||||
{
|
{
|
||||||
setField(Calendar.YEAR, 1900 + year);
|
Calendar cal = Calendar.getInstance();
|
||||||
}
|
cal.setTimeInMillis(time);
|
||||||
|
cal.set(Calendar.SECOND, seconds);
|
||||||
public void setMonth (int month)
|
time = cal.getTimeInMillis();
|
||||||
{
|
|
||||||
setField(Calendar.MONTH, month);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDate (int date)
|
|
||||||
{
|
|
||||||
setField(Calendar.DATE, date);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHours (int hours)
|
|
||||||
{
|
|
||||||
setField(Calendar.HOUR_OF_DAY, hours);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMinutes (int minutes)
|
|
||||||
{
|
|
||||||
setField(Calendar.MINUTE, minutes);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSeconds (int seconds)
|
|
||||||
{
|
|
||||||
setField(Calendar.SECOND, seconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTimezoneOffset ()
|
|
||||||
{
|
|
||||||
Calendar cal = new GregorianCalendar();
|
|
||||||
cal.setTime(this);
|
|
||||||
return - (cal.get(Calendar.ZONE_OFFSET)
|
|
||||||
+ cal.get(Calendar.DST_OFFSET)/(60*1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString ()
|
|
||||||
{
|
|
||||||
// This is slow, but does it matter? There is no particularly
|
|
||||||
// fast way to do it, because we need the timezone offset, which
|
|
||||||
// we don't store. Unix ctime() doesn't provide this information.
|
|
||||||
SimpleDateFormat fmt = new SimpleDateFormat ("E MMM dd HH:mm:ss z yyyy",
|
|
||||||
Locale.US);
|
|
||||||
fmt.setTimeZone(TimeZone.getDefault());
|
|
||||||
return fmt.format(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toGMTString ()
|
|
||||||
{
|
|
||||||
// This method is deprecated. We don't care if it is very slow.
|
|
||||||
SimpleDateFormat fmt = new SimpleDateFormat ("d MMM yyyy HH:mm:ss 'GMT'",
|
|
||||||
Locale.US);
|
|
||||||
fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
|
|
||||||
return fmt.format(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toLocaleString ()
|
|
||||||
{
|
|
||||||
// This method is deprecated. We don't care if it is very slow.
|
|
||||||
DateFormat fmt = DateFormat.getDateTimeInstance();
|
|
||||||
fmt.setTimeZone(TimeZone.getDefault());
|
|
||||||
return fmt.format(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long UTC (int year, int month, int date,
|
|
||||||
int hours, int minutes, int seconds)
|
|
||||||
{
|
|
||||||
GregorianCalendar cal = new GregorianCalendar (TimeZone.getTimeZone("GMT"));
|
|
||||||
cal.set(year+1900, month, date, hours, minutes, seconds);
|
|
||||||
return cal.getTimeInMillis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads an Object from the stream.
|
* Reads an Object from the stream.
|
||||||
*/
|
*/
|
||||||
private void readObject (java.io.ObjectInputStream input)
|
private void readObject(java.io.ObjectInputStream input)
|
||||||
throws java.io.IOException, ClassNotFoundException
|
throws java.io.IOException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
input.defaultReadObject ();
|
input.defaultReadObject();
|
||||||
millis = input.readLong ();
|
time = input.readLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -497,10 +764,10 @@ public class Date implements java.io.Serializable, Cloneable
|
||||||
* in milliseconds. This is the same value that is returned by the
|
* in milliseconds. This is the same value that is returned by the
|
||||||
* method getTime().
|
* method getTime().
|
||||||
*/
|
*/
|
||||||
private void writeObject (java.io.ObjectOutputStream output)
|
private void writeObject(java.io.ObjectOutputStream output)
|
||||||
throws java.io.IOException
|
throws java.io.IOException
|
||||||
{
|
{
|
||||||
output.defaultWriteObject ();
|
output.defaultWriteObject();
|
||||||
output.writeLong (millis);
|
output.writeLong(time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue