Cómo obtener la fecha y/o hora actual en segundos
¿Cómo obtengo la fecha y/o hora actual en segundos usando Javascript?
var seconds = new Date().getTime() / 1000;
....te daré los segundos desde la medianoche del 1 de enero de 1970
Referencia
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).
Usar new Date().getTime() / 1000
es 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) | 0
es menos preferida que Math.floor(Date.now() / 1000)
, porque causa los siguientes problemas:
- 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.
- 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.
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");
}
Para obtener el número de segundos de la época de Javascript, utilice:
date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;