Node.js - 如何生成时间戳 unix 纪元格式?

新手上路,请多包涵

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

Ubuntu终端:

 echo "test.average 4 `date +%s`" | nc -q0 127.0.0.1 2003

节点.js:

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

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

grpahite 理解这种格式的 metric_metric_path value timestamp

谢谢!

原文由 user3846091 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 429
2 个回答

本机 JavaScript Date 系统以毫秒而不是秒为单位工作,但除此之外,它与 UNIX 中的“纪元时间”相同。

您可以通过以下方式舍入秒的小数点并获得 UNIX 纪元:

 Math.floor(+new Date() / 1000)

更新: 正如 Guillermo 指出的那样,替代语法可能更具可读性:

 Math.floor(new Date().getTime() / 1000)

第一个示例中的 + 是一个强制计算为数字的 JavaScript 怪癖,它具有转换为毫秒的相同效果。第二个版本明确地做到了这一点。

原文由 tadman 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果可以,我强烈建议使用 moment.js 。要获取自 UNIX 纪元以来的毫秒数,请执行

moment().valueOf()

要获取自 UNIX 纪元以来的秒数,请执行

moment().unix()

您还可以像这样转换时间:

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

我一直这样做。

要在 Node 上安装 moment.js

 npm install moment

并使用它

var moment = require('moment');
moment().valueOf();

参考

原文由 FullStack 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题