Cómo obtener la fecha y/o hora actual en segundos

Resuelto Hailwood asked hace 14 años • 16 respuestas

¿Cómo obtengo la fecha y/o hora actual en segundos usando Javascript?

Hailwood avatar Sep 30 '10 18:09 Hailwood
Aceptado
var seconds = new Date().getTime() / 1000;

....te daré los segundos desde la medianoche del 1 de enero de 1970

Referencia

sje397 avatar Sep 30 '2010 11:09 sje397
 Date.now()

da milisegundos desde la época. No es necesario utilizar new.

Consulte la referencia aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

(No es compatible con IE8).

Konstantin Schubert avatar Oct 02 '2013 15:10 Konstantin Schubert

Usar new Date().getTime() / 1000es una solución incompleta para obtener los segundos, porque produce marcas de tiempo con unidades de punto flotante:

new Date() / 1000; // 1405792936.933

// Technically, .933 would be in milliseconds

Lo que puede provocar resultados no deseados en declaraciones condicionales:

if (1405792936.993 < 1405792937) // true

En su lugar utilice:

Math.round(Date.now() / 1000); // 1405792937

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

// Or
Math.ceil(Date.now() / 1000); // 1405792937

// Note: In general, I recommend `Math.round()`,
//   but there are use cases where
//   `Math.floor()` and `Math.ceil()`
//   might be better suited.

Advertencia: Los operadores bit a bit podrían usarse para truncar unidades de punto flotante, pero también pueden causar problemas al trabajar con marcas de tiempo. Por ejemplo, la siguiente expresión bit a bit (new Date() / 1000) | 0es menos preferida que Math.floor(Date.now() / 1000), porque causa los siguientes problemas:

  1. De forma predeterminada, los números de Javascript son flotantes de tipo 64 bits (doble precisión), y los operadores bit a bit convierten implícitamente ese tipo en enteros de 32 bits con signo. Podría decirse que el compilador no debería convertir implícitamente el tipo, sino que el desarrollador debería convertirlo explícitamente en el código.
  2. La marca de tiempo entera de 32 bits con signo producida por el operador bit a bit causa el problema del año 2038 , como se indica en los comentarios.
tim-montague avatar Jul 19 '2014 18:07 tim-montague

Según tu comentario, creo que estás buscando algo como esto:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

Luego, en tu cheque, estás verificando:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}
Nick Craver avatar Sep 30 '2010 11:09 Nick Craver

Para obtener el número de segundos de la época de Javascript, utilice:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
Lazarus avatar Sep 30 '2010 11:09 Lazarus