1. ホーム
  2. javascript

[解決済み] タイムスタンプをUNIXエポックフォーマットで生成するには?

2023-05-12 14:15:48

質問

ポート 2003 の Graphite Carbon-cache プロセスにデータを送信しようとしています。

Ubuntuのターミナルです。

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

Node.jsです。

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

ubuntuのターミナルウィンドウのコマンドを使用してデータを送信する場合は正常に動作しています。しかし、nodejsからタイムスタンプをunix epochフォーマットで送信する方法がよくわかりません。

Grpahiteはこのフォーマットでmetric_path value timestampnを理解します。

どのように解決するのですか?

ネイティブのJavaScript Date システムは秒単位ではなくミリ秒単位で動作しますが、それ以外は UNIX と同じ "epoch time" となります。

することで、秒の端数を切り捨て、UNIX のエポックとすることができます。

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

更新しました。 Guillermoが指摘するように、別の構文がより読みやすいかもしれません。

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

+ はJavaScriptの癖で、強制的に数値として評価され、ミリ秒に変換されるのと同じ効果があります。2番目のバージョンではこれを明示的に行っています。