Date()
The Date()
constructor can create a Date
instance or return a string representing the current time.
Syntax
new Date()
new Date(value)
new Date(dateString)
new Date(dateObject)
new Date(year, monthIndex)
new Date(year, monthIndex, day)
new Date(year, monthIndex, day, hours)
new Date(year, monthIndex, day, hours, minutes)
new Date(year, monthIndex, day, hours, minutes, seconds)
new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds)
Date()
Note:
Date()
can be called with or withoutnew
, but with different effects. See Return value.
Parameters
There are five basic forms for the Date()
constructor:
No parameters
When no parameters are provided, the newly-created Date
object represents the current date and time as of the time of instantiation.
Time value or timestamp number
value
- : An integer value representing the number of milliseconds since January 1, 1970, 00:00:00 UTC (the ECMAScript epoch, equivalent to the UNIX epoch), with leap seconds ignored. Keep in mind that most UNIX Timestamp functions are only accurate to the nearest second.
Date string
dateString
: A string value representing a date, in a format recognized by the
Date.parse()
method. (The ECMA262 spec specifies a simplified version of ISO 8601, but other formats can be implementation-defined, which commonly include IETF-compliant RFC 2822 timestamps.)Note: When parsing date strings with the
Date
constructor (andDate.parse
, they are equivalent), always make sure that the input conforms to the ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ
) — the parsing behavior with other formats is implementation-defined and may not work across all browsers. Support for RFC 2822 format strings is by convention only. A library can help if many different formats are to be accommodated.Date-only strings (e.g.
"1970-01-01"
) are treated as UTC, while date-time strings (e.g."1970-01-01T12:00"
) are treated as local. You are therefore also advised to make sure the input format is consistent between the two types.
Date object
dateObject
- : An existing
Date
object. This effectively makes a copy of the existingDate
object with the same date and time. This is equivalent tonew Date(dateObject.valueOf())
, except thevalueOf()
method is not called.
- : An existing
When one parameter is passed to the Date()
constructor, Date
instances are specially treated. All other values are converted to primitives. If the result is a string, it will be parsed as a date string. Otherwise, the resulting primitive is further coerced to a number and treated as a timestamp.
Individual date and time component values
Given at least a year and month, this form of Date()
returns a Date
object whose component values (year, month, day, hour, minute, second, and millisecond) all come from the following parameters. Any missing fields are given the lowest possible value (1
for day
and 0
for every other component). The parameter values are all evaluated against the local time zone, rather than UTC.
If any parameter overflows its defined bounds, it "carries over". For example, if a monthIndex
greater than 11
is passed in, those months will cause the year to increment; if a minutes
greater than 59
is passed in, hours
will increment accordingly, etc. Therefore, new Date(1990, 12, 1)
will return January 1st, 1991; new Date(2020, 5, 19, 25, 65)
will return 2:05 A.M. June 20th, 2020.
Similarly, if any parameter underflows, it "borrows" from the higher positions. For example, new Date(2020, 5, 0)
will return May 31st, 2020.
year
- : Integer value representing the year. Values from
0
to99
map to the years1900
to1999
. All other values are the actual year. See the example.
- : Integer value representing the year. Values from
monthIndex
- : Integer value representing the month, beginning with
0
for January to11
for December.
- : Integer value representing the month, beginning with
day
optional- : Integer value representing the day of the month. The default is
1
.
- : Integer value representing the day of the month. The default is
hours
optional- : Integer value between
0
and23
representing the hour of the day. Defaults to0
.
- : Integer value between
minutes
optional- : Integer value representing the minute segment of a time. The default is
0
minutes past the hour.
- : Integer value representing the minute segment of a time. The default is
seconds
optional- : Integer value representing the second segment of a time. The default is
0
seconds past the minute.
- : Integer value representing the second segment of a time. The default is
milliseconds
optional- : Integer value representing the millisecond segment of a time. The default is
0
milliseconds past the second.
- : Integer value representing the millisecond segment of a time. The default is
Return value
Calling new Date()
(the Date()
constructor) returns a Date
object. If called with an invalid date string, or if the date to be constructed will have a UNIX timestamp less than -8,640,000,000,000,000
or greater than 8,640,000,000,000,000
milliseconds, it returns a Date
object whose toString()
method returns the literal string Invalid Date
.
Calling the Date()
function (without the new
keyword) returns a string representation of the current date and time, exactly as new Date().toString()
does. Any arguments given in a Date()
function call (without the new
keyword) are ignored; regardless of whether it's called with an invalid date string — or even called with any arbitrary object or other primitive as an argument — it always returns a string representation of the current date and time.