Constructor Date()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
El constructor Date()
crea objetos de tipo Date
. Cuando se llama como una función, devuelve una cadena que representa la hora actual.
Pruébalo
Sintaxis
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()
Nota: > Date()
se puede llamar con o sin new
, pero con efectos diferentes. Ver el valor de retorno.
Parámetros
Hay cinco formas básicas para el constructor Date()
:
Sin parámetros
Cuando no se proporcionan parámetros, el objeto Date
recién creado representa la fecha y hora actuales al momento de la instanciación. La marca de tiempo (timestamp) de la fecha devuelta es la misma que el número devuelto por Date.now()
.
Valor de tiempo o número de marca de tiempo
value
-
Un valor entero que representa la marca de tiempo (el número de milisegundos desde la medianoche al comienzo del 1 de enero de 1970, UTC — también conocido como el epoch).
Cadena de fecha
dateString
-
Un valor de cadena que representa una fecha, analizado e interpretado usando el mismo algoritmo implementado por
Date.parse()
. Ver el formato de cadena de fecha y hora para advertencias sobre el uso de diferentes formatos.
Objeto fecha
dateObject
-
Un objeto
Date
existente. Esto efectivamente hace una copia del objetoDate
existente con la misma fecha y hora. Esto es equivalente anew Date(dateObject.valueOf())
, excepto que no se llama al métodovalueOf()
.
Cuando se pasa un parámetro al constructor Date()
, las instancias de Date
se tratan de manera especial. Todos los demás valores se convierten a datos primitivos. Si el resultado es una cadena, se analizará como una cadena de fecha. De lo contrario, el valor primitivo resultante se convierte en un número y se trata como una marca de tiempo.
Valores individuales de componentes de fecha y hora
Dado al menos un año y un mes, esta forma de Date()
devuelve un objeto Date
cuyos valores de componentes (año, mes, día, hora, minuto, segundo y milisegundo) provienen de los siguientes parámetros. Cualquier campo faltante se le da el valor más bajo posible (1
para el día y 0
para todos los demás componentes). Los valores de los parámetros se evalúan en la zona horaria local, en lugar de UTC. Date.UTC()
acepta parámetros similares pero interpreta los componentes como UTC y devuelve una marca de tiempo.
Si algún parámetro excede sus límites definidos, se "arrastra". Por ejemplo, si se pasa un monthIndex
mayor que 11
, esos meses harán que el año incremente; si se pasa un minutes
mayor que 59
, hours
se incrementará en consecuencia, etc. Por lo tanto, new Date(1990, 12, 1)
devolverá el 1 de enero de 1991; new Date(2020, 5, 19, 25, 65)
devolverá las 2:05 AM del 20 de junio de 2020.
De manera similar, si algún parámetro esta por debajo, "toma prestado" de las posiciones superiores. Por ejemplo, new Date(2020, 5, 0)
devolverá el 31 de mayo de 2020.
year
-
Valor entero que representa el año. Los valores de
0
a99
se mapean a los años1900
a1999
. Todos los demás valores son el año real. Ver el ejemplo. monthIndex
-
Valor entero que representa el mes, comenzando con
0
para enero hasta11
para diciembre. day
Opcional-
Valor entero que representa el día del mes. Por defecto es
1
. hours
Opcional-
Valor entero entre
0
y23
que representa la hora del día. Por defecto es0
. minutes
Opcional-
Valor entero que representa el segmento de minutos de una hora. Por defecto es
0
. seconds
Opcional-
Valor entero que representa el segmento de segundos de una hora. Por defecto es
0
. milliseconds
Opcional-
Valor entero que representa el segmento de milisegundos de una hora. Por defecto es
0
.
Valor de retorno
Llamar a new Date()
(el constructor Date()
) devuelve un objeto Date
. Si se llama con una cadena de fecha no válida, o si la fecha que se va a construir tendrá una marca de tiempo menor a -8,640,000,000,000,000
o mayor a 8,640,000,000,000,000
milisegundos, devuelve una fecha no válida (un objeto Date
cuyo método toString()
devuelve "Invalid Date"
y cuyo método valueOf()
devuelve NaN
).
Llamar a la función Date()
(sin la palabra clave new
) devuelve una representación en cadena de la fecha y hora actuales, exactamente como new Date().toString()
. Cualquier argumento dado en una llamada a la función Date()
(sin la palabra clave new
) se ignora; independientemente de si se llama con una cadena de fecha no válida, o incluso se llama con cualquier objeto arbitrario u otro dato primitivo como argumento, siempre devuelve una representación en cadena de la fecha y hora actuales.
Descripción
Precisión de tiempo reducida
Para ofrecer protección contra ataques de sincronización y huellas digitales, la precisión de new Date()
puede redondearse según la configuración del navegador. En Firefox, la preferencia privacy.reduceTimerPrecision
está habilitada de forma predeterminada y el valor predeterminado es 2ms. También puedes habilitar privacy.resistFingerprinting
, en cuyo caso la precisión será de 100ms o el valor de privacy.resistFingerprinting.reduceTimerPrecision.microseconds
, el que sea mayor.
Por ejemplo, con precisión de tiempo reducida, el resultado de new Date().getTime()
siempre será un múltiplo de 2, o un múltiplo de 100 (o privacy.resistFingerprinting.reduceTimerPrecision.microseconds
) con privacy.resistFingerprinting
habilitado.
// Precisión de tiempo reducida (2 ms) en Firefox 60
new Date().getTime();
// Podría ser:
// 1519211809934
// 1519211810362
// 1519211811670
// …
// Precisión de tiempo reducida con `privacy.resistFingerprinting` habilitado
new Date().getTime();
// Podría ser:
// 1519129853500
// 1519129858900
// 1519129864400
// …
Ejemplos
Varias maneras de crear un objeto Date
Los siguientes ejemplos muestran varias maneras de crear fechas en JavaScript:
const today = new Date();
const birthday = new Date("December 17, 1995 03:24:00"); // DESACONSEJADO: puede no funcionar en todos los entornos
const birthday = new Date("1995-12-17T03:24:00"); // Esto está estandarizado y funcionará de manera confiable
const birthday = new Date(1995, 11, 17); // el mes es indexado desde 0
const birthday = new Date(1995, 11, 17, 3, 24, 0);
const birthday = new Date(628021800000); // pasando marca de tiempo epoch
Pasando un valor que no es Date, ni cadena, ni número
Si el constructor Date()
se llama con un parámetro que no es una instancia de Date
, se convertirá a un dato primitivo y luego se verificará si es una cadena. Por ejemplo, new Date(undefined)
es diferente de new Date()
:
console.log(new Date(undefined)); // Fecha no válida
Esto se debe a que undefined
ya es un dato primitivo pero no una cadena, por lo que se convertirá a un número, que es NaN
y, por lo tanto, no es una marca de tiempo válida. Por otro lado, null
se convertirá a 0.
console.log(new Date(null)); // 1970-01-01T00:00:00.000Z
Los Arrays se convertirán en una cadena a través de Array.prototype.toString()
, que une los elementos con comas. Sin embargo, la cadena resultante para cualquier arreglo con más de un elemento no es una cadena de fecha ISO 8601 válida, por lo que su comportamiento de análisis será definido por la implementación. No pases arreglos al constructor Date()
.
console.log(new Date(["2020-06-19", "17:13"]));
// 2020-06-19T17:13:00.000Z en Chrome, ya que reconoce "2020-06-19,17:13"
// "Fecha no válida" en Firefox
Especificaciones
Specification |
---|
ECMAScript Language Specification # sec-date-constructor |
Compatibilidad con navegadores
BCD tables only load in the browser