Date
represents a specific instant
in time, with millisecond precision.
Prior to JDK 1.1, the class Date
had two additional
functions. It allowed the interpretation of dates as year, month, day, hour,
minute, and second values. It also allowed the formatting and parsing
of date strings. Unfortunately, the API for these functions was not
amenable to internationalization. As of JDK 1.1, the
Calendar
class should be used to convert between dates and time
fields and the DateFormat
class should be used to format and
parse date strings.
The corresponding methods in Date
are deprecated.
Although the Date
class is intended to reflect
coordinated universal time (UTC), it may not do so exactly,
depending on the host environment of the Java Virtual Machine.
Nearly all modern operating systems assume that 1 day =
24 × 60 × 60 = 86400 seconds
in all cases. In UTC, however, about once every year or two there
is an extra second, called a "leap second." The leap
second is always added as the last second of the day, and always
on December 31 or June 30. For example, the last minute of the
year 1995 was 61 seconds long, thanks to an added leap second.
Most computer clocks are not accurate enough to be able to reflect
the leap-second distinction.
Some computer standards are defined in terms of Greenwich mean time (GMT), which is equivalent to universal time (UT). GMT is the "civil" name for the standard; UT is the "scientific" name for the same standard. The distinction between UTC and UT is that UTC is based on an atomic clock and UT is based on astronomical observations, which for all practical purposes is an invisibly fine hair to split. Because the earth's rotation is not uniform (it slows down and speeds up in complicated ways), UT does not always flow uniformly. Leap seconds are introduced as needed into UTC so as to keep UTC within 0.9 seconds of UT1, which is a version of UT with certain corrections applied. There are other time and date systems as well; for example, the time scale used by the satellite-based global positioning system (GPS) is synchronized to UTC but is not adjusted for leap seconds. An interesting source of further information is the U.S. Naval Observatory, particularly the Directorate of Time at:
http://tycho.usno.navy.mil
and their definitions of "Systems of Time" at:
http://tycho.usno.navy.mil/systime.html
In all methods of class Date
that accept or return
year, month, date, hours, minutes, and seconds values, the
following representations are used:
- 1900
.
In all cases, arguments given to methods for these purposes need not fall within the indicated ranges; for example, a date may be specified as January 32 and is interpreted as meaning February 1.
Date
object and initializes it so that
it represents the time at which it was allocated, measured to the
nearest millisecond.Date
object and initializes it to
represent the specified number of milliseconds since the
standard base time known as "the epoch", namely January 1,
1970, 00:00:00 GMT.Date
object and initializes it so that
it represents midnight, local time, at the beginning of the day
specified by the year
, month
, and
date
arguments.Date
object and initializes it so that
it represents the instant at the start of the minute specified by
the year
, month
, date
,
hrs
, and min
arguments, in the local
time zone.Date
object and initializes it so that
it represents the instant at the start of the second specified
by the year
, month
, date
,
hrs
, min
, and sec
arguments,
in the local time zone.Date
object and initializes it so that
it represents the date and time indicated by the string
s
, which is interpreted as if by the
Date#parse
method.In the foregoing description, the notation sgn(expression) designates the mathematical signum function, which is defined to return one of -1, 0, or 1 according to whether the value of expression is negative, zero or positive. The implementor must ensure sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception iff y.compareTo(x) throws an exception.)
The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.
Finally, the implementer must ensure that x.compareTo(y)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.
It is strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."
true
if and only if the argument is
not null
and is a Date
object that
represents the same point in time, to the millisecond, as this object.
Thus, two Date
objects are equal if and only if the
getTime
method returns the same long
value for both.
1
and 31
representing the day of the month that contains or begins with the
instant in time represented by this Date object, as
interpreted in the local time zone.0
and 59
.0
and 11
,
with the value 0
representing January.0
and 61
. The
values 60
and 61
can only occur on those
Java Virtual Machines that take leap seconds into account.Date
object.
For example, in Massachusetts, five time zones west of Greenwich:
because on February 14, 1996, standard time (Eastern Standard Time) is in use, which is offset five hours from UTC; but:new Date(96, 1, 14).getTimezoneOffset() returns 300
because on June 1, 1996, daylight saving time (Eastern Daylight Time) is in use, which is offset only four hours from UTC.new Date(96, 5, 1).getTimezoneOffset() returns 240
This method produces the same result as if it computed:
(this.getTime() - UTC(this.getYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())) / (60 * 1000)
Date
object, as interpreted in the local
time zone.(int)(this.getTime()^(this.getTime() >>> 32))
wait
methods.
The awakened thread will not be able to proceed until the current thread relinquishes the lock on this object. The awakened thread will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened thread enjoys no reliable privilege or disadvantage in being the next thread to lock this object.
This method should only be called by a thread that is the owner of this object's monitor. A thread becomes the owner of the object's monitor in one of three ways:
synchronized
statement
that synchronizes on the object.
Class,
by executing a
synchronized static method of that class.
Only one thread at a time can own an object's monitor.
wait
methods.
The awakened threads will not be able to proceed until the current thread relinquishes the lock on this object. The awakened threads will compete in the usual manner with any other threads that might be actively competing to synchronize on this object; for example, the awakened threads enjoy no reliable privilege or disadvantage in being the next thread to lock this object.
This method should only be called by a thread that is the owner
of this object's monitor. See the notify
method for a
description of the ways in which a thread can become the owner of
a monitor.
It accepts many syntaxes; in particular, it recognizes the IETF standard date syntax: "Sat, 12 Aug 1995 13:30:00 GMT". It also understands the continental U.S. time-zone abbreviations, but for general use, a time-zone offset should be used: "Sat, 12 Aug 1995 13:30:00 GMT+0430" (4 hours, 30 minutes west of the Greenwich meridian). If no time zone is specified, the local time zone is assumed. GMT and UTC are considered equivalent.
The string s is processed from left to right, looking for data of interest. Any material in s that is within the ASCII parenthesis characters ( and ) is ignored. Parentheses may be nested. Otherwise, the only characters permitted within s are these ASCII characters:
and whitespace characters.abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789,+-:/
A consecutive sequence of decimal digits is treated as a decimal number:
A consecutive sequence of letters is regarded as a word and treated as follows:
Once the entire string s has been scanned, it is converted to a time result in one of two ways. If a time zone or time-zone offset has been recognized, then the year, month, day of month, hour, minute, and second are interpreted in UTC and then the time-zone offset is applied. Otherwise, the year, month, day of month, hour, minute, and second are interpreted in the local time zone.
Date
object to represent a point in time that is
time
milliseconds after January 1, 1970 00:00:00 GMT.Date
object is modified so
that it represents a point in time within the specified year,
with the month, date, hour, minute, and second the same as
before, as interpreted in the local time zone. (Of course, if
the date was February 29, for example, and the year is set to a
non-leap year, then the new date will be treated as if it were
on March 1.)d mon yyyy hh:mm:ss GMTwhere:
The result does not depend on the local time zone.
%c
" format supported by the strftime()
function of ISO C.Date
object to a String
of the form:
where:dow mon dd hh:mm:ss zzz yyyy
The current thread must own this object's monitor. The thread
releases ownership of this monitor and waits until another thread
notifies threads waiting on this object's monitor to wake up
either through a call to the notify
method or the
notifyAll
method. The thread then waits until it can
re-obtain ownership of the monitor and resumes execution.
As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:
synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition }This method should only be called by a thread that is the owner of this object's monitor. See the
notify
method for a
description of the ways in which a thread can become the owner of
a monitor.The current thread must own this object's monitor.
This method causes the current thread (call it T) to place itself in the wait set for this object and then to relinquish any and all synchronization claims on this object. Thread T becomes disabled for thread scheduling purposes and lies dormant until one of four things happens:
A thread can also wake up without being notified, interrupted, or timing out, a so-called spurious wakeup. While this will rarely occur in practice, applications must guard against it by testing for the condition that should have caused the thread to be awakened, and continuing to wait if the condition is not satisfied. In other words, waits should always occur in loops, like this one:
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition }(For more information on this topic, see Section 3.2.3 in Doug Lea's "Concurrent Programming in Java (Second Edition)" (Addison-Wesley, 2000), or Item 50 in Joshua Bloch's "Effective Java Programming Language Guide" (Addison-Wesley, 2001).
If the current thread is interrupted by another thread while it is waiting, then an InterruptedException is thrown. This exception is not thrown until the lock status of this object has been restored as described above.
Note that the wait method, as it places the current thread into the wait set for this object, unlocks only this object; any other objects on which the current thread may be synchronized remain locked while the thread waits.
This method should only be called by a thread that is the owner
of this object's monitor. See the notify
method for a
description of the ways in which a thread can become the owner of
a monitor.
This method is similar to the wait
method of one
argument, but it allows finer control over the amount of time to
wait for a notification before giving up. The amount of real time,
measured in nanoseconds, is given by:
1000000*timeout+nanos
In all other respects, this method does the same thing as the method of one argument. In particular, wait(0, 0) means the same thing as wait(0).
The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until either of the following two conditions has occurred:
notify
method
or the notifyAll
method.
timeout
milliseconds plus nanos
nanoseconds arguments, has
elapsed.
The thread then waits until it can re-obtain ownership of the monitor and resumes execution.
As in the one argument version, interrupts and spurious wakeups are possible, and this method should always be used in a loop:
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition }This method should only be called by a thread that is the owner of this object's monitor. See the
notify
method for a
description of the ways in which a thread can become the owner of
a monitor.