Datepublic class Date extends Object implements Serializable, Comparable, Cloneable{@code Date} represents a specific moment in time, to the millisecond. |
Fields Summary |
---|
private static final long | serialVersionUID | private static int | creationYear | private transient long | milliseconds |
Constructors Summary |
---|
public Date()Initializes this {@code Date} instance to the current date and time.
this(System.currentTimeMillis());
| public Date(int year, int month, int day)Constructs a new {@code Date} initialized to midnight in the default {@code TimeZone} on
the specified date.
GregorianCalendar cal = new GregorianCalendar(false);
cal.set(1900 + year, month, day);
milliseconds = cal.getTimeInMillis();
| public Date(int year, int month, int day, int hour, int minute)Constructs a new {@code Date} initialized to the specified date and time in the
default {@code TimeZone}.
GregorianCalendar cal = new GregorianCalendar(false);
cal.set(1900 + year, month, day, hour, minute);
milliseconds = cal.getTimeInMillis();
| public Date(int year, int month, int day, int hour, int minute, int second)Constructs a new {@code Date} initialized to the specified date and time in the
default {@code TimeZone}.
GregorianCalendar cal = new GregorianCalendar(false);
cal.set(1900 + year, month, day, hour, minute, second);
milliseconds = cal.getTimeInMillis();
| public Date(long milliseconds)Initializes this {@code Date} instance using the specified millisecond value. The
value is the number of milliseconds since Jan. 1, 1970 GMT.
this.setTime(milliseconds);
| public Date(String string)Constructs a new {@code Date} initialized to the date and time parsed from the
specified String.
milliseconds = parse(string);
|
Methods Summary |
---|
public static long | UTC(int year, int month, int day, int hour, int minute, int second)Returns the millisecond value of the specified date and time in GMT.
GregorianCalendar cal = new GregorianCalendar(false);
cal.setTimeZone(TimeZone.getTimeZone("GMT")); //$NON-NLS-1$
cal.set(1900 + year, month, day, hour, minute, second);
return cal.getTimeInMillis();
| public boolean | after(java.util.Date date)Returns if this {@code Date} is after the specified Date.
return milliseconds > date.milliseconds;
| public boolean | before(java.util.Date date)Returns if this {@code Date} is before the specified Date.
return milliseconds < date.milliseconds;
| public java.lang.Object | clone()Returns a new {@code Date} with the same millisecond value as this {@code Date}.
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
| public int | compareTo(java.util.Date date)Compare the receiver to the specified {@code Date} to determine the relative
ordering.
if (milliseconds < date.milliseconds) {
return -1;
}
if (milliseconds == date.milliseconds) {
return 0;
}
return 1;
| public boolean | equals(java.lang.Object object)Compares the specified object to this {@code Date} and returns if they are equal.
To be equal, the object must be an instance of {@code Date} and have the same millisecond
value.
return (object == this) || (object instanceof Date)
&& (milliseconds == ((Date) object).milliseconds);
| public int | getDate()Returns the gregorian calendar day of the month for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.DATE);
| public int | getDay()Returns the gregorian calendar day of the week for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.DAY_OF_WEEK) - 1;
| public int | getHours()Returns the gregorian calendar hour of the day for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.HOUR_OF_DAY);
| public int | getMinutes()Returns the gregorian calendar minute of the hour for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.MINUTE);
| public int | getMonth()Returns the gregorian calendar month for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.MONTH);
| public int | getSeconds()Returns the gregorian calendar second of the minute for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.SECOND);
| public long | getTime()Returns this {@code Date} as a millisecond value. The value is the number of
milliseconds since Jan. 1, 1970, midnight GMT.
return milliseconds;
| public int | getTimezoneOffset()Returns the timezone offset in minutes of the default {@code TimeZone}.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
return -(cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / 60000;
| public int | getYear()Returns the gregorian calendar year since 1900 for this {@code Date} object.
return new GregorianCalendar(milliseconds).get(Calendar.YEAR) - 1900;
| public int | hashCode()Returns an integer hash code for the receiver. Objects which are equal
return the same value for this method.
return (int) (milliseconds >>> 32) ^ (int) milliseconds;
| private static int | parse(java.lang.String string, java.lang.String[] array)
for (int i = 0, alength = array.length, slength = string.length(); i < alength; i++) {
if (string.regionMatches(true, 0, array[i], 0, slength)) {
return i;
}
}
return -1;
| public static long | parse(java.lang.String string)Returns the millisecond value of the date and time parsed from the
specified {@code String}. Many date/time formats are recognized, including IETF
standard syntax, i.e. Tue, 22 Jun 1999 12:16:00 GMT-0500
if (string == null) {
// luni.06=The string argument is null
throw new IllegalArgumentException(Messages.getString("luni.06")); //$NON-NLS-1$
}
char sign = 0;
int commentLevel = 0;
int offset = 0, length = string.length(), state = 0;
int year = -1, month = -1, date = -1;
int hour = -1, minute = -1, second = -1, zoneOffset = 0;
boolean zone = false;
final int PAD = 0, LETTERS = 1, NUMBERS = 2;
StringBuffer buffer = new StringBuffer();
while (offset <= length) {
char next = offset < length ? string.charAt(offset) : '\r";
offset++;
if (next == '(") {
commentLevel++;
}
if (commentLevel > 0) {
if (next == ')") {
commentLevel--;
}
if (commentLevel == 0) {
next = ' ";
} else {
continue;
}
}
int nextState = PAD;
if ('a" <= next && next <= 'z" || 'A" <= next && next <= 'Z") {
nextState = LETTERS;
} else if ('0" <= next && next <= '9") {
nextState = NUMBERS;
} else if (!Character.isSpace(next) && ",+-:/".indexOf(next) == -1) { //$NON-NLS-1$
throw new IllegalArgumentException();
}
if (state == NUMBERS && nextState != NUMBERS) {
int digit = Integer.parseInt(buffer.toString());
buffer.setLength(0);
if (sign == '+" || sign == '-") {
if (zoneOffset == 0) {
zone = true;
zoneOffset = sign == '-" ? -digit : digit;
sign = 0;
} else {
throw new IllegalArgumentException();
}
} else if (digit >= 70) {
if (year == -1
&& (Character.isSpace(next) || next == ',"
|| next == '/" || next == '\r")) {
year = digit;
} else {
throw new IllegalArgumentException();
}
} else if (next == ':") {
if (hour == -1) {
hour = digit;
} else if (minute == -1) {
minute = digit;
} else {
throw new IllegalArgumentException();
}
} else if (next == '/") {
if (month == -1) {
month = digit - 1;
} else if (date == -1) {
date = digit;
} else {
throw new IllegalArgumentException();
}
} else if (Character.isSpace(next) || next == ',"
|| next == '-" || next == '\r") {
if (hour != -1 && minute == -1) {
minute = digit;
} else if (minute != -1 && second == -1) {
second = digit;
} else if (date == -1) {
date = digit;
} else if (year == -1) {
year = digit;
} else {
throw new IllegalArgumentException();
}
} else if (year == -1 && month != -1 && date != -1) {
year = digit;
} else {
throw new IllegalArgumentException();
}
} else if (state == LETTERS && nextState != LETTERS) {
String text = buffer.toString().toUpperCase();
buffer.setLength(0);
if (text.length() == 1) {
throw new IllegalArgumentException();
}
if (text.equals("AM")) { //$NON-NLS-1$
if (hour == 12) {
hour = 0;
} else if (hour < 1 || hour > 12) {
throw new IllegalArgumentException();
}
} else if (text.equals("PM")) { //$NON-NLS-1$
if (hour == 12) {
hour = 0;
} else if (hour < 1 || hour > 12) {
throw new IllegalArgumentException();
}
hour += 12;
} else {
DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
String[] weekdays = symbols.getWeekdays(), months = symbols
.getMonths();
int value;
if (parse(text, weekdays) != -1) {/* empty */
} else if (month == -1
&& (month = parse(text, months)) != -1) {/* empty */
} else if (text.equals("GMT") || text.equals("UT") //$NON-NLS-1$ //$NON-NLS-2$
|| text.equals("UTC")) { //$NON-NLS-1$
zone = true;
zoneOffset = 0;
} else if ((value = zone(text)) != 0) {
zone = true;
zoneOffset = value;
} else {
throw new IllegalArgumentException();
}
}
}
if (next == '+" || (year != -1 && next == '-")) {
sign = next;
} else if (!Character.isSpace(next) && next != ',"
&& nextState != NUMBERS) {
sign = 0;
}
if (nextState == LETTERS || nextState == NUMBERS) {
buffer.append(next);
}
state = nextState;
}
if (year != -1 && month != -1 && date != -1) {
if (hour == -1) {
hour = 0;
}
if (minute == -1) {
minute = 0;
}
if (second == -1) {
second = 0;
}
if (year < (creationYear - 80)) {
year += 2000;
} else if (year < 100) {
year += 1900;
}
if (zone) {
if (zoneOffset >= 24 || zoneOffset <= -24) {
hour -= zoneOffset / 100;
minute -= zoneOffset % 100;
} else {
hour -= zoneOffset;
}
return UTC(year - 1900, month, date, hour, minute, second);
}
return new Date(year - 1900, month, date, hour, minute, second)
.getTime();
}
throw new IllegalArgumentException();
| private void | readObject(java.io.ObjectInputStream stream)
stream.defaultReadObject();
setTime(stream.readLong());
| public void | setDate(int day)Sets the gregorian calendar day of the month for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.DATE, day);
milliseconds = cal.getTimeInMillis();
| public void | setHours(int hour)Sets the gregorian calendar hour of the day for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.HOUR_OF_DAY, hour);
milliseconds = cal.getTimeInMillis();
| public void | setMinutes(int minute)Sets the gregorian calendar minute of the hour for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.MINUTE, minute);
milliseconds = cal.getTimeInMillis();
| public void | setMonth(int month)Sets the gregorian calendar month for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.MONTH, month);
milliseconds = cal.getTimeInMillis();
| public void | setSeconds(int second)Sets the gregorian calendar second of the minute for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.SECOND, second);
milliseconds = cal.getTimeInMillis();
| public void | setTime(long milliseconds)Sets this {@code Date} to the specified millisecond value. The value is the
number of milliseconds since Jan. 1, 1970 GMT.
this.milliseconds = milliseconds;
| public void | setYear(int year)Sets the gregorian calendar year since 1900 for this {@code Date} object.
GregorianCalendar cal = new GregorianCalendar(milliseconds);
cal.set(Calendar.YEAR, year + 1900);
milliseconds = cal.getTimeInMillis();
| public java.lang.String | toGMTString()Returns the string representation of this {@code Date} in GMT in the format: 22
Jun 1999 13:02:00 GMT
SimpleDateFormat format1 = new SimpleDateFormat("d MMM ", Locale.US); //$NON-NLS-1$
SimpleDateFormat format2 = new SimpleDateFormat(
" HH:mm:ss 'GMT'", Locale.US); //$NON-NLS-1$
TimeZone gmtZone = TimeZone.getTimeZone("GMT"); //$NON-NLS-1$
format1.setTimeZone(gmtZone);
format2.setTimeZone(gmtZone);
GregorianCalendar gc = new GregorianCalendar(gmtZone);
gc.setTimeInMillis(milliseconds);
return format1.format(this) + gc.get(Calendar.YEAR)
+ format2.format(this);
| public java.lang.String | toLocaleString()Returns the string representation of this {@code Date} for the default {@code Locale}.
return DateFormat.getDateTimeInstance().format(this);
| public java.lang.String | toString()Returns the string representation of this {@code Date} in the format: Tue Jun 22
13:07:00 GMT 1999
return new SimpleDateFormat("E MMM dd HH:mm:ss z ", Locale.US) //$NON-NLS-1$
.format(this)
+ new GregorianCalendar(milliseconds).get(Calendar.YEAR);
| private void | writeObject(java.io.ObjectOutputStream stream)
stream.defaultWriteObject();
stream.writeLong(getTime());
| private static int | zone(java.lang.String text)
if (text.equals("EST")) { //$NON-NLS-1$
return -5;
}
if (text.equals("EDT")) { //$NON-NLS-1$
return -4;
}
if (text.equals("CST")) { //$NON-NLS-1$
return -6;
}
if (text.equals("CDT")) { //$NON-NLS-1$
return -5;
}
if (text.equals("MST")) { //$NON-NLS-1$
return -7;
}
if (text.equals("MDT")) { //$NON-NLS-1$
return -6;
}
if (text.equals("PST")) { //$NON-NLS-1$
return -8;
}
if (text.equals("PDT")) { //$NON-NLS-1$
return -7;
}
return 0;
|
|