¿Cómo se obtiene una marca de tiempo en JavaScript?

4015

¿Cómo puedo obtener una marca de tiempo en JavaScript?

Algo similar a la marca de tiempo de Unix , es decir, un número único que representa la hora y fecha actuales. Ya sea como un número o una cadena.

pupeno
fuente
¿Cómo obtener una marca de tiempo de 64 bits en JS?
Alexander Mills
@AlexanderMills Dado que JavaScript no admite enteros de 64 bits, deberá obtener dos enteros de 32 bits. Haz otra pregunta.
wizzwizz4

Respuestas:

4916

Corto y elegante:

+ new Date()

Un operador unario como plusactiva el valueOfmétodo en el Dateobjeto y devuelve la marca de tiempo (sin ninguna alteración).

Detalles:

En casi todos los navegadores actuales puede usar Date.now()para obtener la marca de tiempo UTC en milisegundos ; Una notable excepción a esto es IE8 y versiones anteriores (ver tabla de compatibilidad ).

Sin embargo, puede hacer una cuña para esto:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Para obtener la marca de tiempo en segundos , puede usar:

Math.floor(Date.now() / 1000)

O, alternativamente, podría usar:

Date.now() / 1000 | 0

Que debería ser un poco más rápido, pero también menos legible (también vea esta respuesta ).

Recomendaría usar Date.now()(con compatibilidad shim). Es un poco mejor porque es más corto y no crea un nuevo Dateobjeto. Sin embargo, si no desea un calce y una compatibilidad máxima, puede usar el método "antiguo" para obtener la marca de tiempo en milisegundos :

new Date().getTime()

Que luego puedes convertir a segundos como este:

Math.round(new Date().getTime()/1000)

Y también puede usar el valueOfmétodo que mostramos arriba:

new Date().valueOf()

Marca de tiempo en milisegundos

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());

daveb
fuente
11
Otra excepción notable es node.js. Vine aquí desde Google buscando hacer lo mismo en el nodo
Milan Babuškov
57
¿No Date.now() / 1000 | 0sufrirá el problema del año 2038 ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
gengkev
3
o incluso, sin usar Math.floor ..~~(Date.now() / 1000)
Matej
14
@ MilanBabuškov pero node.js es compatibleDate.now()
OrangeDog
51
Si bien +new Dataes inteligente, no es legible por otros desarrolladores. Date.now()es más claro y garantiza que todos los demás sepan lo que está sucediendo.
Harry Sadler
514

Me gusta esto, porque es pequeño:

+new Date

También me gusta esto, porque es igual de corto y es compatible con los navegadores modernos, y más de 500 personas votaron que es mejor:

Date.now()
xer0x
fuente
636
Esta opción es una mala idea. Se pasa por alto fácilmente, parece un error tipográfico y, en realidad, depende de un efecto secundario del lenguaje. Veo un mal código.
inanutshellus
10
@Billy Como lo recuerdo, calculé la marca de tiempo en las dos soluciones sugeridas 1 millón de veces cada una, y calculé el tiempo de ejecución promedio. Lo ejecuté en Firefox y Chrome, con getTime siendo más rápido en ambos navegadores. Dicho esto, incluso si fuera (marginalmente) más lento, elegiría new Date().getTime(). ¡Por suerte para mí, la solución más rápida ya es la solución legible!
inanutshellus
11
De acuerdo con @ FabrícioMatté. El comportamiento del operador unario puede no ser rudimentario, pero si no lo ha repasado, no espere poder funcionar eficazmente en muchos equipos.
Jason T Featheringham
99
@Niklaus Eso es porque lo estás concatenando a otra cadena. En ese caso, new Date().toString()se llama.
Kirb
77
por curiosidad, ¿qué está +haciendo el operador para que salga como una cuerda?
zadubz
276

JavaScript funciona con la cantidad de milisegundos desde la época, mientras que la mayoría de los otros idiomas funcionan con los segundos. Podría trabajar con milisegundos, pero tan pronto como pase un valor para decir PHP, las funciones nativas de PHP probablemente fallarán. Entonces, para estar seguro, siempre uso los segundos, no milisegundos.

Esto le dará una marca de tiempo Unix (en segundos):

var unix = Math.round(+new Date()/1000);

Esto le dará los milisegundos desde la época (no la marca de tiempo de Unix):

var milliseconds = new Date().getTime();
Daithí
fuente
44
PHP debería funcionar bien con milisegundos, ya que los usa con la función microtime ().
Nico Burns
55
Mientras microtime () está presente, la mayoría de las funciones relacionadas con el tiempo en php esperan que la marca de tiempo esté en segundos y no en milisegundos. Lo que es más, es que microtime () devuelve un flotador (si pasa verdadero) donde la parte decimal es la fracción de segundo (precisa al microsegundo), mientras que newDate (). GetTime () devuelve un int donde solo cuenta milisegundos desde La época. Por ejemplo (php) si tuviera que llamar a floor (microtime (true)), esto sería efectivamente lo mismo que tiempo de llamada (), que está en segundos y no en micro o milisegundos. Dividir por 1000 como arriba es la solución más fácil para esto.
gregghz
49
En lugar de redondo, use piso. 700 ms todavía no es todo el segundo
Anagmate
Unix timestampvs Seconds since the Epoch. ¿No se supone que estos dos significan lo mismo?
Mudiaga Ejenavi
147
var time = Date.now || function() {
  return +new Date;
};

time();
Staale
fuente
66
¿Por qué el || ¿operador? ¿Date.now () no está disponible en todos los navegadores?
Chris Noe
67
Date.now () es de JavaScript 1.5 y no es compatible con IE 8.
Søren Løvborg
99
Los motores que no se han actualizado para admitir el método Date.now pueden evitar su ausencia utilizando la siguiente cuña: if (! Date.now) {Date.now = function now () {return + (new Date); }; }
Por Quested Aronsson
o(Date.now||function(){return +new Date})();
130

Proporciono múltiples soluciones con descripciones en esta respuesta. Siéntase libre de hacer preguntas si algo no está claro
PD: lamentablemente alguien fusionó esto con la respuesta principal sin dar crédito.


Solución rápida y sucia:

Date.now() /1000 |0

Advertencia : podría romperse en 2038 y devolver números negativos si haces la |0magia. Usar en su Math.floor()lugar para ese momento

Math.floor() solución:

Math.floor(Date.now() /1000);

Alguna alternativa nerd de Derek 朕 會 功夫 tomada de los comentarios debajo de esta respuesta:

new Date/1e3|0

Polyfill para ponerse a Date.now()trabajar:

Para que funcione en IE, puede hacer esto (Polyfill de MDN ):

if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

Si no le importa el año / día de la semana / horario de verano, puede deshacerse de él y usarlo después de 2038:

var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();

Algunos resultados de cómo se verá:

new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )

Por supuesto, romperá el horario de verano, pero dependiendo de lo que esté construyendo, esto podría ser útil si necesita realizar operaciones binarias en las marcas de tiempo después de que int32 se romperá en 2038.

Esto también devolverá valores negativos, pero solo si el usuario de esa PC en la que está ejecutando su código está cambiando el reloj de su PC al menos al 31 de diciembre del año anterior.


Si solo desea saber el tiempo relativo desde el momento en que se ejecutó el código primero, puede usar algo como esto:

var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

En caso de que esté usando jQuery, puede usarlo $.now()como se describe en los documentos de jQuery, lo que hace que el polyfill sea obsoleto ya que $.now()internamente hace lo mismo:(new Date).getTime()

Si está contento con la versión de jQuery, considere votar esta respuesta ya que no la encontré yo mismo.


Ahora una pequeña explicación de lo que |0hace:

Al proporcionar |, le dice al intérprete que haga una operación OR binaria. Las operaciones de bit requieren números absolutos que convierten el resultado decimal Date.now() / 1000en un entero.

Durante esa conversión, se eliminan los decimales, lo que resulta en el mismo resultado que usar Math.floor()pero usando menos código.

Sin embargo, ten cuidado: convertirá un doble de 64 bits en un entero de 32 bits. Esto dará como resultado la pérdida de información cuando se trate de grandes cantidades. Las marcas de tiempo se romperán después de 2038 debido al desbordamiento de enteros de 32 bits.


Para obtener más información sobre Date.nowsiga este enlace: Date.now()@ MDN

GottZ
fuente
12
| 0 es similar a Math.floor () ya que es una operación de bits (que no funciona con flotantes). generalmente es incluso más rápido que Math.floor () ya que no es una llamada a función, es un operador de JavaScript nativo.
GottZ
8
Date.now()referencia: developer.mozilla.org/en-US/docs/JavaScript/Reference/…
Web_Designer
@Christophe, ¿por qué piensas eso? debido a la solución de IE? excepto esa parte, es bastante simple y personalizable, creo.
GottZ
55
polyfills / shims no son complicados. Son el resultado de tener que soportar 9 versiones de navegador diferentes y la industria decide elegir qué estándares adoptan y cuáles inventan.
rlemon
8
Como referencia, el más compacto que puede obtener es new Date/1e3|0.
Derek 朕 會 功夫
88
var timestamp = Number(new Date()); // current time as number
aemkei
fuente
61

jQuery proporciona su propio método para obtener la marca de tiempo:

var timestamp = $.now();

(además solo implementa (new Date).getTime()expresión)

REF: http://api.jquery.com/jQuery.now/

Visión
fuente
2
jQuery también se ocupará de cualquier problema de compatibilidad entre navegadores con las diferentes API de JavaScript.
Henry Heleine
44
@VisioN Busqué una forma de hacer marcas de tiempo en Node.js. Encontré una pregunta de JavaScript en stackoverflow y recibo una respuesta en jQuery, que no ayuda. Javascript y jQuery son dos cosas. Si damos respuestas a todos los marcos de JavaScript que existen, terminamos con un número posiblemente infinito de respuestas, lo que va en contra de la filosofía de Q / A en stackoverflow. También: i.stack.imgur.com/Ledgt.gif : D
Pierre Arlaud
55
@VisioN ¿Quién dijo que JavaScript debe usarse en un navegador?
Pierre Arlaud
55
@PierreArlaud ¿Y quién dijo que esta pregunta es solo sobre NodeJS?
VisioN
2
@KingRider No es necesario parseInt, ya que el valor resultante siempre será a Number.
VisioN
46

console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch

Tom Viner
fuente
44
Esto es igual a +new Date.. :)
19h
8
acaba de hacerDate.now()
Orlando
@Orlando ve las otras respuestas, el problema con now () es el soporte del navegador
Christophe
@Christophe solo hace un polyfill simple, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Orlando
44
@Orlando exactamente, no solo hagas Date.now ()
Christophe
43

Además de las otras opciones, si desea un formato de fecha ISO, puede obtenerlo directamente

console.log(new Date().toISOString());

Joaquinglezsantos
fuente
¡No devuelve un entero con la pregunta que se hace!
alexventuraio
@AlexVentura con un ISO de formato de fecha de cadena puede instanciar un objeto de fecha y restar entre ellos. Por ejemplo:new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
Joaquinglezsantos
41

Solo para sumar, aquí hay una función para devolver una cadena de marca de tiempo en Javascript. Ejemplo: 15:06:38 PM

function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}
vive el amor
fuente
11
El OP pregunta por una marca de tiempo entera; Esta es una representación en cadena de la hora.
Brad Koch
3
"similar a la marca de tiempo de Unix, es decir, un número único que representa la hora actual"
Brad Koch
Tenía un código para mostrar la hora, pero partes de Australia mostraban la fecha completa, este script me ayudó a descomponerlo y mostrarlo correctamente. (+1 para eso)
Syfer
40

Fecha , un objeto nativo en JavaScript es la forma en que obtenemos todos los datos sobre el tiempo.

Solo tenga cuidado en JavaScript, la marca de tiempo depende del conjunto del equipo cliente, por lo que no es una marca de tiempo 100% precisa. Para obtener el mejor resultado, debe obtener la marca de tiempo del lado del servidor .

De todos modos, mi forma preferida es usar vainilla. Esta es una forma común de hacerlo en JavaScript:

Date.now(); //return 1495255666921

En MDN se menciona a continuación:

El método Date.now () devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC.
Como now () es un método estático de Date, siempre lo usa como Date.now ().

Si usa una versión inferior a ES5, Date.now();no funciona y necesita usar:

new Date().getTime();
Alireza
fuente
29

Uno que aún no he visto

Math.floor(Date.now() / 1000); // current time in seconds

Otro que aún no he visto es

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
Belldandu
fuente
1
Date.now() /1000 |0hace lo mismo y ha sido respondido antes
GottZ
3
bien. Seguro que lo edité Math.floor(), pero solo para dejar en claro que tiene el mismo efecto que |0. No quería hacerte daño ni nada. Solo quería decirte que tu respuesta de alguna manera ya existe. Al observar todas las respuestas dadas, hay algunas que notan el piso de alguna manera.
GottZ
Creo que importar toda la biblioteca de Lodash solo para usar _.now()es un poco exagerado. Recomendaría solo importar la funcionalidad de Lodash que necesita usar (en este caso, _.now () en NPM ), pero incluso ellos han dejado de usar su paquete a favor de solo usarlo Date.now().
mgthomas99
27

El Date.getTime()método se puede usar con un pequeño ajuste:

El valor devuelto por el método getTime es el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC.

Divida el resultado entre 1000 para obtener la marca de tiempo de Unix, floorsi es necesario:

(new Date).getTime() / 1000

El Date.valueOf()método es funcionalmente equivalente a Date.getTime(), lo que hace posible utilizar operadores aritméticos en un objeto de fecha para lograr resultados idénticos. En mi opinión, este enfoque afecta la legibilidad.

Salman A
fuente
77
No necesita los paréntesis:new Date().getTime() / 1000
Ry-
14
No los necesita, pero hacen que el código sea más legible (en mi humilde opinión). Cuestión de gustos, supongo.
johndodo
Ni siquiera necesita ()después new Datey .getTime()desde entonces /convertirá el objeto Fecha en un número de todos modos.
Derek 朕 會 功夫
25

El código Math.floor(new Date().getTime() / 1000)se puede acortar a new Date / 1E3 | 0.

Considere omitir la getTime()invocación directa y usarla | 0como reemplazo de la Math.floor()función. También es bueno recordar que 1E3es un equivalente más corto para 1000(se prefiere E mayúscula que minúscula para indicar 1E3como constante).

Como resultado obtienes lo siguiente:

var ts = new Date / 1E3 | 0;

console.log(ts);

Valentin Podkamennyi
fuente
3
@dchest 37-14 "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; = 23 bytes;
Valentin Podkamennyi
@MatthieuCharbonnier ¿Qué es exactamente ilegible? Signo de división, 1E3, tubería o cero? Consulte el fragmento de código en mi respuesta anterior.
Valentin Podkamennyi
1
@Valentin Estás minimizando / complicando el código simple para casi ningún beneficio. No veo el punto para hacer eso. ¡No estamos en Code Golf!
Matthieu Charbonnier
@ MatthieuCharbonnier, no hay nada complicado, solo sintaxis básica y operadores. El punto principal es escribir código corto, claro y comprensible.
Valentin Podkamennyi
2
@Valentin Por favor explíqueme cómo reemplazar Math.floor()por |0hace que este código sea "claro y comprensible". Explícame cuál es el punto de guardar 1 byte reemplazándolo 1000por 1E3. Esto es ridículo. Veo un mal código.
Matthieu Charbonnier el
24

Actuación

Hoy - 2020.04.23 Realizo pruebas para las soluciones elegidas. Probé en MacOs High Sierra 10.13.6 en Chrome 81.0, Safari 13.1, Firefox 75.0

Conclusiones

  • La solución Date.now()(E) es más rápida en Chrome y Safari y la segunda más rápida en Firefox, y esta es probablemente la mejor opción para una solución rápida entre navegadores
  • La solución performance.now()(G), lo que es sorprendente, es más de 100 veces más rápido que otras soluciones en Firefox pero la más lenta en Chrome
  • Las soluciones C, D, F son bastante lentas en todos los navegadores

ingrese la descripción de la imagen aquí

Detalles

Resultados para el cromo

ingrese la descripción de la imagen aquí

Puede realizar la prueba en su máquina AQUÍ

El código utilizado en las pruebas se presenta en el siguiente fragmento

Kamil Kiełczewski
fuente
Me interesaría si lo hicieras, performance.now()ya que se supone que es el más preciso en términos de sello.
SamsonTheBrave
@SamsonTheBrave gracias por tu comentario - Actualizo la respuesta
Kamil Kiełczewski
Impresionante, gracias por tu actualización! Me di cuenta de que estabas viendo una diferencia en el rendimiento ahora la velocidad en Firefox. Esto podría ser el resultado de Firefox privacy.reduceTimerPrecisionque redondea los resultados al milisegundo más cercano. También está habilitado de forma predeterminada, pero puede deshabilitarse. developer.mozilla.org/en-US/docs/Web/API/Performance/now
SamsonTheBrave
22

Recomiendo usarlo moment.js. Para obtener el número de milisegundos desde la época de UNIX, haga

moment().valueOf()

Para obtener el número de segundos desde la época UNIX, haga

moment().unix()

También puedes convertir tiempos así:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

Lo hago todo el tiempo. Sin juego de palabras.

Para usar moment.jsen el navegador:

<script src="moment.js"></script>
<script>
    moment().valueOf();
</script>

Para obtener más detalles, incluidas otras formas de instalar y usar MomentJS, consulte sus documentos

Completa pila
fuente
21

Para una marca de tiempo con resolución de microsegundos, hay performance.now:

function time() { 
  return performance.now() + performance.timing.navigationStart;
}

Esto podría, por ejemplo 1436140826653.139, ceder , mientras que Date.nowsolo da 1436140826653.

iter
fuente
21

Solo puedes usar

    var timestamp = new Date().getTime();
    console.log(timestamp);

para obtener la marca de tiempo actual. No es necesario hacer nada extra.

Jitendra Pawar
fuente
20

Aquí hay una función simple para generar la marca de tiempo en el formato: mm / dd / aa hh: mi: ss

function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}
deepakssn
fuente
10
@ b123400 - Aquí está la versión de Lisp: (new (chain (-date) (to-i-s-o-string))).
Inaimathi
20

// The Current Unix Timestamp
// 1443534720 seconds since Jan 01 1970. (UTC)

// seconds
console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720
console.log(Math.floor(Date.now() / 1000)); // 1443534720
console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720

// milliseconds
console.log(Math.floor(new Date().valueOf())); // 1443534720087
console.log(Math.floor(Date.now())); // 1443534720087
console.log(Math.floor(new Date().getTime())); // 1443534720087

// jQuery
// seconds
console.log(Math.floor($.now() / 1000)); // 1443534720
// milliseconds
console.log($.now()); // 1443534720087
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

blueberry0xff
fuente
16

Cualquier navegador que no sea compatible con Date.now, puede usar esto para obtener la fecha y hora actual:

currentTime = Date.now() || +new Date()
mr.boyfox
fuente
3
(Reformulando mi comentario) Su código tiene un problema: ejecuta el método Date.now en lugar de verificar primero su soporte. En navegadores antiguos, causará Date.now no es un error de función .
Salman A
Tal vez una mejor alternativa sería utilizar un operador ternario afirmar que Date.nowrealmente existe (y es una función), antes de intentar invocarlo: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().
mgthomas99
14

Este tiene una solución: que convierte el sello unixtime a tim en js intente esto

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
Anoop PS
fuente
14

El otro día aprendí una forma realmente genial de convertir un objeto Date dado en una marca de tiempo Unix del código fuente de JQuery Cookie .

Aquí hay un ejemplo:

var date = new Date();
var timestamp = +date;
Jorge
fuente
Estaba a punto de escribir el nuevo objeto Date (). Puede consolar el registro (new Date ()) y luego hojear los métodos relacionados bajo el nuevo objeto / función Date ()
sg28
14

Si desea una forma básica de generar una marca de tiempo en Node.js, esto funciona bien.

var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

Nuestro equipo está utilizando esto para reventar el caché en un entorno localhost. La salida es /dist/css/global.css?v=245521377donde 245521377está la marca de tiempo generada por hrtime().

Espero que esto ayude, los métodos anteriores también pueden funcionar, pero descubrí que este es el enfoque más simple para nuestras necesidades en Node.js.

Kevin Leary
fuente
13

Esto parece funcionar.

console.log(clock.now);
// returns 1444356078076

console.log(clock.format(clock.now));
//returns 10/8/2015 21:02:16

console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
//returns 10/8/2015 21:08:18

var clock = {
    now:Date.now(),
    add:function (qty, units) {
            switch(units.toLowerCase()) {
                case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                case 'minutes' :  val = qty * 1000 * 60;  break;
                case 'seconds' :  val = qty * 1000;  break;
                default       :  val = undefined;  break;
                }
            return val;
            },
    format:function (timestamp){
            var date = new Date(timestamp);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hours = date.getHours();
            var minutes = "0" + date.getMinutes();
            var seconds = "0" + date.getSeconds();
            // Will display time in xx/xx/xxxx 00:00:00 format
            return formattedTime = month + '/' + 
                                day + '/' + 
                                year + ' ' + 
                                hours + ':' + 
                                minutes.substr(-2) + 
                                ':' + seconds.substr(-2);
            }
};
Ronnie Royston
fuente
13

Si es para fines de registro, puede usar ISOString

new Date().toISOString()

"2019-05-18T20: 02: 36.694Z"

cenkarioz
fuente
12

Para usuarios lodash y subrayados , use _.now.

var timestamp = _.now(); // in milliseconds
Muhammad Reda
fuente
10

Moment.js puede abstraer mucho del dolor al tratar con las fechas de Javascript.

Ver: http://momentjs.com/docs/#/displaying/unix-timestamp/

moment().unix();
Rimian
fuente
2
Tenga en cuenta que esto proporciona el número de segundos (no milisegundos) desde la época UNIX. Si quieres los milisegundos, úsalo moment().valueOf(). Mira mi respuesta.
FullStack
9

Al momento de escribir esto, la respuesta principal tiene 9 años, y muchas cosas han cambiado desde entonces, y no menos importante, tenemos un soporte casi universal para una solución no hacky:

Date.now()

Si desea estar absolutamente seguro de que esto no se romperá en algún navegador antiguo (anterior al 9), puede ponerlo detrás de un cheque, así:

const currentTimestamp = (!Date.now ? +new Date() : Date.now());

Esto devolverá los milisegundos desde el tiempo de la época, por supuesto, no segundos.

Documentación de MDN en Date.now

Olemak
fuente
8

forma más simple:

var timeStamp=event.timestamp || new Date().getTime();
Vicky Gonsalves
fuente
Sé de dónde eventviene. Debe dar una mejor explicación de la forma en que lo resuelve en lugar de escribir una respuesta. ¡Por favor!
alexventuraio
Estaba a punto de escribir el nuevo objeto Date (). Puede consolar el registro (new Date ()) y luego hojear los métodos relacionados bajo el nuevo objeto / función Date ()
sg28