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 (
1
–31
) para la fecha especificada según la hora local. Date.prototype.getDay()
- Devuelve el día de la semana (
0
–6
) 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 (
0
–23
) en la fecha especificada según la hora local. Date.prototype.getMilliseconds()
- Devuelve los milisegundos (
0
–999
) en la fecha especificada según la hora local. Date.prototype.getMinutes()
- Devuelve los minutos (
0
–59
) en la fecha especificada según la hora local. Date.prototype.getMonth()
- Devuelve el mes (
0
–11
) en la fecha especificada según la hora local. Date.prototype.getSeconds()
- Devuelve los segundos (
0
–59
) 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 (
1
–31
) en la fecha especificada según la hora universal. Date.prototype.getUTCDay()
- Devuelve el día de la semana (
0
–6
) 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 (
0
–23
) en la fecha especificada según la hora universal. Date.prototype.getUTCMilliseconds()
- Devuelve los milisegundos (
0
–999
) en la fecha especificada según la hora universal. Date.prototype.getUTCMinutes()
- Devuelve los minutos (
0
–59
) en la fecha especificada según la hora universal. Date.prototype.getUTCMonth()
- Devuelve el mes (
0
–11
) en la fecha especificada según la hora universal. Date.prototype.getUTCSeconds()
- Devuelve los segundos (
0
–59
) 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
utilizandotoISOString()
. Destinado a ser utilizado porJSON.stringify()
. Date.prototype.toGMTString()
- Devuelve una cadena que representa el
Date
según la zona horaria GMT (UTC). UsartoUTCString()
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 elObject.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 elObject.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
Si entiendes que ha resultado provechoso nuestro post, te agradeceríamos que lo compartas con el resto seniors de esta manera nos ayudas a extender esta información.