web-dev-qa-db-ja.com

タイムスタンプUNIXエポック形式nodejsを生成する方法?

私はポート2003でグラファイトカーボンキャッシュプロセスにデータを送信しようとしています

1)Ubuntuターミナル

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

2)NODEJS

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

私のubuntuでターミナルウィンドウコマンドを使用してデータを送信するとうまくいきます。ただし、nodejsからUNIXタイムスタンプ形式のタイムスタンプを送信する方法がわかりませんか?

Grpahiteは、この形式のメトリックを認識しますmetric_path値タイムスタンプ\ n

46
user3846091

ネイティブJavaScript Dateシステムは、秒ではなくミリ秒で動作しますが、それ以外の場合はUNIXの「エポック時間」と同じです。

以下を実行することにより、秒の端数を切り捨ててUNIXエポックを取得できます。

Math.floor(new Date() / 1000)
108
tadman

可能であれば、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();

参照

17
FullStack

それを単純化するヘルパーメソッド、JSの上に以下をコピー/貼り付けます:

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

これで、簡単な呼び出しで好きな場所で使用できます:

// 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())

デモ:

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

    // Get the current unix time: 
    console.log("Current Time: " + Date.time())

    // Parse a date and get it as Unix time
    console.log("Custom Time (Mon, 25 Dec 2010 13:30:00 GMT): " + new Date('Mon, 25 Dec 2010 13:30:00 GMT').toUnixTime())
2