如何生成时间戳unix epoch格式的nodejs?

use*_*091 49 javascript node.js graphite

我正在尝试使用端口2003将数据发送到石墨碳缓存进程

1)Ubuntu终端

echo "test.average 4 `date +%s`" | nc -q0 127.0.0.1 2003
Run Code Online (Sandbox Code Playgroud)

2)NODEJS

var socket = net.createConnection(2003, "127.0.0.1", function() {
    socket.write("test.average "+assigned_tot+"\n");
    socket.end();
});
Run Code Online (Sandbox Code Playgroud)

当我在我的ubuntu上使用终端窗口命令发送数据时,它工作正常.但是,我不知道如何从nodejs发送时间戳unix纪元格式?

Grpahite以此格式度量度量标准度量路径值时间戳\n

tad*_*man 114

原生JavaScript Date系统在几秒内工作,而不是几秒,但除此之外,它与UNIX中的"纪元时间"相同.

你可以通过执行以下操作来舍入一小段时间并获得UNIX纪元:

Math.floor(new Date() / 1000)
Run Code Online (Sandbox Code Playgroud)

  • Typescript 会抱怨这个问题,因为日期是另一种类型,而不是数字,也适用于 Date.parse(new Date()) / 1000 等,请考虑: Math.floor(new Date().getTime() / 1000) OR Math.floor (+新日期() / 1000) (2认同)

Ful*_*ack 16

如果可以的话,我强烈推荐使用moment.js.要获得自UNIX纪元以来的毫秒数,请执行此操作

moment().valueOf()
Run Code Online (Sandbox Code Playgroud)

要获得自UNIX纪元以来的秒数,请执行此操作

moment().unix()
Run Code Online (Sandbox Code Playgroud)

你也可以像这样转换时间:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()
Run Code Online (Sandbox Code Playgroud)

我一直这样做.

moment.js在Node上安装,

npm install moment
Run Code Online (Sandbox Code Playgroud)

并使用它

var moment = require('moment');
moment().valueOf();
Run Code Online (Sandbox Code Playgroud)

REF

  • 使用`moment.js`比使用`Math.floor(new Date()/ 1000)这样的东西有什么特别的好处吗? (5认同)

Bob*_*Bob 6

在打字稿中,只需运行Math.floor(new Date().getTime() / 1000)

> Math.floor(new Date().getTime() / 1000)
1581040613
Run Code Online (Sandbox Code Playgroud)

我当前运行的是 Node 13.7.0


Muh*_*man 5

简化它的辅助方法,将以下内容复制/粘贴到 JS 之上:

Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
Date.time = function() { return new Date().toUnixTime(); }
Run Code Online (Sandbox Code Playgroud)

现在您可以通过简单的调用在任何您想要的地方使用它:

// Get the current unix time: 
console.log(Date.time())

// Parse a date and get it as Unix time
console.log(new Date('Mon, 25 Dec 2010 13:30:00 GMT').toUnixTime())
Run Code Online (Sandbox Code Playgroud)

演示:

Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
Date.time = function() { return new Date().toUnixTime(); }
Run Code Online (Sandbox Code Playgroud)

  • 您应该[避免修改不属于您的对象的原型](/sf/answers/435643001/) (2认同)

KJ *_*han 5

ECMAScript5 之后你可以使用:

Math.floor(Date.now() / 1000);
Run Code Online (Sandbox Code Playgroud)

它以秒为单位生成纪元时间戳。