JavaScript Date los objetos representan un único momento en el tiempo en un formato independiente de la plataforma. Date los objetos contienen un Number que representa milisegundos desde el 1 de enero de 1970 UTC.

Nota: TC39 está trabajando en Temporal, una nueva API de fecha / hora. Lea más sobre esto en el Blog de Igalia. ¡Todavía no está listo para su uso en producción!

Descripción

La época y las marcas de tiempo de ECMAScript

Una fecha de JavaScript se especifica fundamentalmente como la cantidad de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970, UTC. Esta fecha y hora no son las mismas que las Época UNIX (el número de segundos que han transcurrido desde la medianoche del 1 de enero de 1970, UTC), que es el valor base predominante para los valores de fecha y hora registrados por computadora.

Nota: Es importante tener en cuenta que, si bien el valor de hora en el corazón de un objeto Date es UTC, los métodos básicos para obtener la fecha y la hora o sus componentes funcionan en la zona horaria local (es decir, el sistema host) y la compensación.

Cabe señalar que el máximo Date no tiene el mismo valor que el número entero seguro máximo (Number.MAX_SAFE_INTEGER es 9.007.199.254.740.991). En cambio, en ECMA-262 se define que un máximo de ± 100.000.000 (cien millones) de días en relación con el 1 de enero de 1970 UTC (es decir, el 20 de abril de 271821 AEC ~ 13 de septiembre de 275760 CE) puede representarse mediante el estándar Date objeto (equivalente a ± 8,640,000,000,000,000 milisegundos).

Conversiones de formato de fecha y zona horaria

Hay varios métodos disponibles para obtener una fecha en varios formatos, así como para realizar conversiones de zona horaria. Particularmente útiles son las funciones que generan la fecha y la hora en la hora universal coordinada (UTC), la hora estándar global definida por la hora estándar mundial. (Esta vez se conoce históricamente como Meridiano de Greenwich, ya que UTC se encuentra a lo largo del meridiano que incluye Londres (y la cercana Greenwich) en el Reino Unido). El dispositivo del usuario proporciona la hora local.

Además de los métodos para leer y alterar componentes individuales de la fecha y hora local (como getDay() y setHours()), también hay versiones de los mismos métodos que leen y manipulan la fecha y la hora usando UTC (como getUTCDay() y setUTCHours()).

Constructor

Date()
Cuando se llama como una función, devuelve una representación de cadena de la fecha y hora actuales, exactamente como new Date().toString() lo hace.
new Date()
Cuando se llama como constructor, devuelve un nuevo Date objeto.

Métodos estáticos

Date.now()
Devuelve el valor numérico correspondiente a la hora actual: el número de milisegundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC, con los segundos intercalares ignorados.
Date.parse()
Analiza una representación de cadena de una fecha y devuelve el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC, con los segundos intercalares ignorados.

Nota: Análisis de cadenas con Date.parse se desaconseja enfáticamente debido a las diferencias e incoherencias del navegador.

Date.UTC()
Acepta los mismos parámetros que la forma más larga del constructor (es decir, de 2 a 7) y devuelve el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC, con los segundos intercalares ignorados.

Métodos de instancia

Date.prototype.getDate()
Devuelve el día del mes (131) para la fecha especificada según la hora local.
Date.prototype.getDay()
Devuelve el día de la semana (06) para la fecha especificada según la hora local.
Date.prototype.getFullYear()
Devuelve el año (4 dígitos para años de 4 dígitos) de la fecha especificada según la hora local.
Date.prototype.getHours()
Devuelve la hora (023) en la fecha especificada según la hora local.
Date.prototype.getMilliseconds()
Devuelve los milisegundos (0999) en la fecha especificada según la hora local.
Date.prototype.getMinutes()
Devuelve los minutos (059) en la fecha especificada según la hora local.
Date.prototype.getMonth()
Devuelve el mes (011) en la fecha especificada según la hora local.
Date.prototype.getSeconds()
Devuelve los segundos (059) en la fecha especificada según la hora local.
Date.prototype.getTime()
Devuelve el valor numérico de la fecha especificada como el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC. (Los valores negativos se devuelven para tiempos anteriores).
Date.prototype.getTimezoneOffset()
Devuelve el desplazamiento de la zona horaria en minutos para la configuración regional actual.
Date.prototype.getUTCDate()
Devuelve el día (fecha) del mes (131) en la fecha especificada según la hora universal.
Date.prototype.getUTCDay()
Devuelve el día de la semana (06) en la fecha especificada según la hora universal.
Date.prototype.getUTCFullYear()
Devuelve el año (4 dígitos para años de 4 dígitos) en la fecha especificada según la hora universal.
Date.prototype.getUTCHours()
Devuelve las horas (023) en la fecha especificada según la hora universal.
Date.prototype.getUTCMilliseconds()
Devuelve los milisegundos (0999) en la fecha especificada según la hora universal.
Date.prototype.getUTCMinutes()
Devuelve los minutos (059) en la fecha especificada según la hora universal.
Date.prototype.getUTCMonth()
Devuelve el mes (011) en la fecha especificada según la hora universal.
Date.prototype.getUTCSeconds()
Devuelve los segundos (059) en la fecha especificada según la hora universal.
Date.prototype.getYear()
Devuelve el año (normalmente de 2 a 3 dígitos) en la fecha especificada según la hora local. Usar getFullYear() en lugar de.
Date.prototype.setDate()
Establece el día del mes para una fecha específica según la hora local.
Date.prototype.setFullYear()
Establece el año completo (por ejemplo, 4 dígitos para años de 4 dígitos) para una fecha específica de acuerdo con la hora local.
Date.prototype.setHours()
Establece las horas de una fecha específica según la hora local.
Date.prototype.setMilliseconds()
Establece los milisegundos para una fecha especificada según la hora local.
Date.prototype.setMinutes()
Establece los minutos para una fecha específica según la hora local.
Date.prototype.setMonth()
Establece el mes para una fecha específica según la hora local.
Date.prototype.setSeconds()
Establece los segundos para una fecha específica según la hora local.
Date.prototype.setTime()
Establece el Date objeto al tiempo representado por varios milisegundos desde el 1 de enero de 1970, 00:00:00 UTC. Utilice números negativos para tiempos anteriores.
Date.prototype.setUTCDate()
Establece el día del mes para una fecha específica según la hora universal.
Date.prototype.setUTCFullYear()
Establece el año completo (por ejemplo, 4 dígitos para años de 4 dígitos) para una fecha especificada de acuerdo con la hora universal.
Date.prototype.setUTCHours()
Establece la hora de una fecha especificada según la hora universal.
Date.prototype.setUTCMilliseconds()
Establece los milisegundos para una fecha especificada según la hora universal.
Date.prototype.setUTCMinutes()
Establece los minutos de una fecha específica según la hora universal.
Date.prototype.setUTCMonth()
Establece el mes para una fecha específica según la hora universal.
Date.prototype.setUTCSeconds()
Establece los segundos para una fecha específica según la hora universal.
Date.prototype.setYear()
Establece el año (generalmente de 2 a 3 dígitos) para una fecha específica de acuerdo con la hora local. Usar setFullYear() en lugar de.
Date.prototype.toDateString()
Devuelve la parte de “fecha” del Date como una cadena legible por humanos como 'Thu Apr 12 2018'.
Date.prototype.toISOString()
Convierte una fecha en una cadena siguiendo el formato extendido ISO 8601.
Date.prototype.toJSON()
Devuelve una cadena que representa el Date utilizando toISOString(). Destinado a ser utilizado por JSON.stringify().
Date.prototype.toGMTString()
Devuelve una cadena que representa el Date según la zona horaria GMT (UTC). Usar toUTCString() en lugar de.
Date.prototype.toLocaleDateString()
Devuelve una cadena con una representación sensible a la localidad de la parte de la fecha de esta fecha según la configuración del sistema.
Date.prototype.toLocaleFormat()
Convierte una fecha en una cadena, utilizando una cadena de formato.
Date.prototype.toLocaleString()
Devuelve una cadena con una representación sensible a la localidad de esta fecha. Anula el Object.prototype.toLocaleString() método.
Date.prototype.toLocaleTimeString()
Devuelve una cadena con una representación sensible a la localidad de la parte de tiempo de esta fecha, según la configuración del sistema.
Date.prototype.toString()
Devuelve una cadena que representa el especificado Date objeto. Anula el Object.prototype.toString() método.
Date.prototype.toTimeString()
Devuelve la parte de “tiempo” del Date como una cadena legible por humanos.
Date.prototype.toUTCString()
Convierte una fecha en una cadena utilizando la zona horaria UTC.
Date.prototype.valueOf()
Devuelve el valor primitivo de a Date objeto. Anula el Object.prototype.valueOf() método.

Ejemplos de

Varias formas de crear un objeto Date

Los siguientes ejemplos muestran varias formas de crear fechas JavaScript:

Nota: Análisis de cadenas de fechas con el Date constructor (y Date.parse, son equivalentes) se desaconseja enfáticamente debido a las diferencias e inconsistencias del navegador.

let today =newDate()let birthday =newDate('December 17, 1995 03:24:00')let birthday =newDate('1995-12-17T03:24:00')let birthday =newDate(1995,11,17)// the month is 0-indexedlet birthday =newDate(1995,11,17,3,24,0)let birthday =newDate(628021800000)// passing epoch timestamp

Para obtener la fecha, el mes y el año o la hora

let[month, date, year]=newDate().toLocaleDateString("en-US").split("/")let[hour, minute, second]=newDate().toLocaleTimeString("en-US").split(/😐 /)

Mapa de años de dos dígitos hasta 1900-1999

Valores de 0 para 99 mapa de los años 1900 para 1999. Todos los demás valores son el año real.

Para crear y obtener fechas entre los años 0 y 99 los Date.prototype.setFullYear() y Date.prototype.getFullYear() deben utilizarse métodos.

let date =newDate(98,1)// Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)// Deprecated method; 98 maps to 1998 here as well
date.setYear(98)// Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98)// Sat Feb 01 0098 00:00:00 GMT+0000 (BST)

Calcular el tiempo transcurrido

Los siguientes ejemplos muestran cómo determinar el tiempo transcurrido entre dos fechas de JavaScript en milisegundos.

Debido a las diferentes duraciones de días (debido al cambio de horario de verano), meses y años, expresar el tiempo transcurrido en unidades mayores que horas, minutos y segundos requiere abordar una serie de problemas y debe investigarse a fondo antes de intentarlo.

// Using Date objectslet start = Date.now()// The event to time goes here:doSomethingForALongTime()let end = Date.now()let elapsed = end - start // elapsed time in milliseconds
// Using built-in methodslet start =newDate()// The event to time goes here:doSomethingForALongTime()let end =newDate()let elapsed = end.getTime()- start.getTime()// elapsed time in milliseconds
// To test a function and get back its returnfunctionprintElapsedTime(fTest)let nStartTime = Date.now(),
      vReturn =fTest(),
      nEndTime = Date.now()

  console.log(`Elapsed time: $String(nEndTime - nStartTime) milliseconds`)return vReturn
let yourFunctionReturn =printElapsedTime(yourFunction)

Nota: En los navegadores que admiten la API de rendimiento webla función de tiempo de alta resolución, Performance.now() puede proporcionar mediciones más confiables y precisas del tiempo transcurrido que Date.now().

Obtenga el número de segundos desde ECMAScript Epoch

let seconds = Math.floor(Date.now()/1000)

En este caso, es importante devolver solo un número entero, por lo que una simple división no es suficiente. También es importante devolver solo los segundos realmente transcurridos. (Es por eso que este código usa Math.floor(), y noMath.round().)

Especificaciones

Especificación
Especificación del lenguaje ECMAScript (ECMAScript)
# seg-fecha-objetos

Compatibilidad del navegador

Escritorio Móvil
Cromo Borde Firefox explorador de Internet Ópera Safari WebView Android Chrome Android Firefox para Android Opera Android Safari en IOS Internet de Samsung
Date 1 12 1 3El Formato de fecha ISO8601 no es compatible con Internet Explorer 8 o más temprano. 3 1 1 18 4 10.1 1 1.0
Date 1 12 1 3 3 1 1 18 4 10.1 1 1.0
UTC 1 12 1 3 3 1 1 18 4 10.1 1 1.0
getDate 1 12 1 3 3 1 1 18 4 10.1 1 1.0
getDay 1 12 1 3 3 1 1 18 4 10.1 1 1.0
getFullYear 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getHours 1 12 1 3 3 1 1 18 4 10.1 1 1.0
getMilliseconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getMinutes 1 12 1 4 3 1 1 18 4 10.1 1 1.0
getMonth 1 12 1 4 3 1 1 18 4 10.1 1 1.0
getSeconds 1 12 1 4 3 1 1 18 4 10.1 1 1.0
getTime 1 12 1 4 3 1 1 18 4 10.1 1 1.0
getTimezoneOffset 1 12 1 5 3 1 1 18 4 10.1 1 1.0
getUTCDate 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCDay 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCFullYear 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCHours 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCMilliseconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCMinutes 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCMonth 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getUTCSeconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
getYear 1 12 1 3 3 1 1 18 4 10.1 1 1.0
now 5 12 3 9 10,5 4 1 18 4 14 4 1.0
parse 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setDate 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setFullYear 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setHours 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setMilliseconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setMinutes 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setMonth 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setSeconds 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setTime 1 12 1 3 3 1 1 18 4 10.1 1 1.0
setUTCDate 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCFullYear 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCHours 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCMilliseconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCMinutes 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCMonth 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setUTCSeconds 1 12 1 4 4 1 1 18 4 10.1 1 1.0
setYear 1 12 1 3 3 1 1 18 4 10.1 1 1.0
toDateString 1 12 1 5.5 5 1 1 18 4 10.1 1 1.0
toGMTString 1 12 1 3 3 1 1 18 4 10.1 1 1.0
toISOString 3 12 1 9 10,5 5 ≤37 18 4 11 4.2 1.0
toJSON 3 12 1 8 10,5 5 ≤37 18 4 11 4.2 1.0
toLocaleDateString 1 12 1 5.5 5 1 1 18 4 10.1 1 1.0
toLocaleString 1 12 1 3 3 1 1 18 4 10.1 1 1.0
toLocaleTimeString 1 12 1 5.5 5 1 1 18 4 10.1 1 1.0
toSource No No 1-74 A partir de Firefox 74, toSource() ya no está disponible para su uso por contenido web. Todavía está permitido para código interno y privilegiado. No No No No No 4 No No No
toString 1 12 1 3 3 1 1 18 4 10.1 1 1.0
toTimeString 1 12 1 5.5 5 1 1 18 4 10.1 1 1.0
toUTCString 1 12 1 4 4 1 1 18 4 10.1 1 1.0
valueOf 1 12 1 4 3 1 1 18 4 10.1 1 1.0
@@toPrimitive 47 15 44 No 34 10 47 47 44 34 10 5,0

Ver también

  • Date() constructor