如何在 Javascript 中以秒为单位获取当前日期/时间?
以秒为单位获取当前日期/时间
IT技术
javascript
datetime
2021-03-07 04:31:25
6个回答
Date.now()
给出自纪元以来的毫秒数。无需使用new
.
在此处查看参考:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
(在 IE8 中不支持。)
Usingnew Date().getTime() / 1000
是获取秒数的不完整解决方案,因为它生成带有浮点单位的时间戳。
new Date() / 1000; // 1405792936.933
// Technically, .933 would be in milliseconds
而是使用:
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.
此外,不带浮点数的值对于条件语句更安全,因为使用浮点数获得的粒度可能会导致不需要的结果。例如:
if (1405792936.993 < 1405792937) // true
警告:按位运算符在用于操作时间戳时可能会导致问题。例如,(new Date() / 1000) | 0
也可用于将值“地板”为秒,但是该代码会导致以下问题:
- 默认情况下,Javascript 数字是类型 64 位(双精度)浮点数,按位运算符隐式地将该类型转换为有符号的 32 位整数。可以说,类型不应该被编译器隐式转换,而开发人员应该在需要的地方进行转换。
- 由按位运算符生成的有符号 32 位整数时间戳会导致2038 年问题,如注释中所述。
根据您的评论,我认为您正在寻找这样的东西:
var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;
然后在您的支票中,您正在检查:
if(new Date().getTime() > timeout) {
alert("Session has expired");
}
要从 Javascript 纪元中获取秒数,请使用:
date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;