如何获得自Java时代以来的秒数?


152

在Unix上,我可以运行date '+%s'以获取自纪元以来的秒数。但是我需要在浏览器前端而不是后端进行查询。

有没有办法找出自JavaScript中的Epoch以来的秒数?

Answers:


246
var seconds = new Date() / 1000;

或者,对于较宽松的版本:

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

不要忘了Math.floor()Math.round()四舍五入到最接近的整数,否则您可能会得到一个非常奇怪的小数,您不希望这样:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);

8
var seconds = new Date() / 1000;<-这是什么奥术魔法?
马丁·威克曼

3
回复:奥术魔术:根据这些文档,Javascript知道如何将Date对象转换为Number。这意味着您可以键入Number(new Date())以获取数字,甚至+(new Date()),也可以在诸如的数字上下文中使用任何Date实例,new Date()/1000而Javascript将有助于将该Date实例转换为数字以与您的数学方程式一起使用。
dpmott


39

您想从纪元起数秒

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

示例使用

foo = seconds_since_epoch();

3
这应该是答案,因为它考虑了十进制。
James Pack

11

以上解决方案使用实例属性。另一种方法是使用class属性Date.now

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

如果希望time_in_seconds为整数,则有两个选项:

一个。如果要与C样式截断保持一致:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

b。如果您只想保留整数除法的数学定义,那么请发言。(Python的整数除法可以做到这一点)。

time_in_seconds_int = Math.floor(time_in_seconds);


5

您可以创建一个Date对象(其中将包含当前时间),然后调用getTime()以获取自纪元以来的ms。

var ms = new Date().getTime();

如果要秒,则将其除以1000:

var sec = new Date().getTime() / 1000;




0
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.