2010-09-30 73 views
220

如何在Javascript中以秒为单位获取当前日期/时间?以秒为单位获取当前日期/时间

+1

的可能的复制[你如何在JavaScript中的时间戳?](http://stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript) – GottZ 2016-04-25 15:34:11

回答

337
var seconds = new Date().getTime()/1000; 

... 。会给你自1970年1月1日午夜以来的秒数

Reference

+8

虽然这是准确的,但它何时会有用? :) – 2010-09-30 11:58:57

+0

@ sje397 - 是的......但问题(就像大多数人一样)最有可能解决*实际*问题,你能给我一个你想要显示这个结果的例子吗? – 2010-09-30 12:02:47

+5

@尼克 - 我认为所有的例子都是必然的猜测,并且会听起来很有意思 - 但我会拍摄一下:)假设你有数据时间标记为unix时间,并且想要确定它的年龄。尽管我认为这很可能是'以秒为单位的当前日期/时间'的意思;只是我的直觉。 – sje397 2010-09-30 12:10:11

37

基于您的评论,我认为你在寻找这样的事情:

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

然后,你要检查:

if(new Date().getTime() > timeout) { 
    alert("Session has expired"); 
} 
14

要从时代的Javascript使用获得的秒数:

date = new Date(); 
milliseconds = date.getTime(); 
seconds = milliseconds/1000; 
33

new Date().getTime()/1000使用是用于获得秒一个不完整的解决方案,因为它产生的时间戳与浮点单元。

var timestamp = new Date()/1000; // 1405792936.933 
// Technically, .933 would be milliseconds. 

一个更好的解决办法是:

var timestamp = new Date()/1000 | 0; // 1405792936 
// Floors the value 

// - OR - 

var timestamp = Math.round(new Date()/1000); // 1405792937 
// Rounds the value 

值,而花车也更安全的是条件语句,如浮动可能会产生不想要的结果。用float获得的粒度可能超过需要。

if (1405792936.993 < 1405792937) // true 
1

最优雅的方式来获得秒/毫秒的时间自1970年1月1日是

var milliseconds = +new Date();   
var seconds = milliseconds/1000; 
0

让我提出更好的捷径:

+new Date # Milliseconds since Linux epoch 
+new Date/1000 # Seconds since Linux epoch 
Math.round(+new Date/1000) #Seconds without decimals since Linux epoch 
5

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

 
// Current time in seconds 
 
console.log(Math.floor(new Date().valueOf()/1000)); // 1443535752 
 
console.log(Math.floor(Date.now()/1000));   // 1443535752 
 
console.log(Math.floor(new Date().getTime()/1000)); // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jQuery的

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

0

这些JavaScript的解决方案,让您自午夜,1月1日的毫秒或秒,1970年

的IE 9溶液(IE 8或旧版本不支持这一点。):

var timestampInMilliseconds = Date.now(); 
var timestampInSeconds = Date.now()/1000; // A float value; not an integer. 
    timestampInSeconds = Math.floor(Date.now()/1000); // Floor it to get the seconds. 
    timestampInSeconds = Date.now()/1000 | 0; // Also you can do floor it like this. 
    timestampInSeconds = Math.round(Date.now()/1000); // Round it to get the seconds. 

要获取有关Date.now()的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

的通用的解决方案:

// ‘+’ operator makes the operand numeric. 
// And ‘new’ operator can be used without the arguments ‘(……)’. 
var timestampInMilliseconds = +new Date; 
var timestampInSeconds = +new Date/1000; // A float value; not an intger. 
    timestampInSeconds = Math.floor(+new Date/1000); // Floor it to get the seconds. 
    timestampInSeconds = +new Date/1000 | 0; // Also you can do floor it like this. 
    timestampInSeconds = Math.round(+new Date/1000); // Round it to get the seconds. 

要小心使用,如果你不希望是这样的情况。

​​
相关问题