Es funktioniert gut, wenn ich Daten mit dem Terminalfensterbefehl auf meinem Ubuntu sende. Ich bin mir jedoch nicht sicher, wie ich das Zeitstempel-Unix-Epochenformat von nodejs senden soll?
Grpahite versteht Metriken in diesem Format metric_path value timestamp\n
+new Date() == das Unix-Datum
– dandavis
11. August 2014 um 19:04 Uhr
@dandavis Eigentlich ist das nur das Datum. Sie müssen anrufen getTime() Millisekunden zu bekommen.
– Tadman
11. August 2014 um 19:08 Uhr
@tadman: nein, das “+” zwingt das Datum in seinen valueOf () -Wert, der eine Zahl ist, die die Anzahl der ms seit dem Beginn von 1970 darstellt. Kurz gesagt, Sie brauchen nie getTime()
– dandavis
11. August 2014 um 19:10 Uhr
Das ist eine interessante Optimierung. Dieser Wert ist immer noch Millisekunden, also müssen Sie durch 1000 teilen, um Sekunden zu erhalten.
– Tadman
11. August 2014 um 19:13 Uhr
Tadman
Das native JavaScript Date System arbeitet in Millisekunden im Gegensatz zu Sekunden, aber ansonsten ist es die gleiche “Epochenzeit” wie in UNIX.
Sie können die Sekundenbruchteile abrunden und die UNIX-Epoche erhalten, indem Sie Folgendes tun:
Math.floor(+new Date() / 1000)
Aktualisieren: Wie Guillermo betont, ist eine alternative Syntax möglicherweise besser lesbar:
Math.floor(new Date().getTime() / 1000)
Das + Im ersten Beispiel handelt es sich um eine JavaScript-Eigenart, die die Auswertung als Zahl erzwingt, was den gleichen Effekt der Umwandlung in Millisekunden hat. Die zweite Version tut dies ausdrücklich.
dasselbe wie ~~ (neues Datum/1000) oder Math.floor(neues Datum/1000)
– dandavis
11. August 2014 um 19:11 Uhr
@dandavis Entsprechend bearbeitet. Danke für den Hinweis dort. Ich habe verwendet floor Hier ist es sicher ein ganzzahliger Wert, weil traditionell time_t Zeiten haben keine Dezimalstellen.
– Tadman
11. August 2014 um 19:14 Uhr
Ein Aha-Moment ist die Erkenntnis, dass Daten nur einige Methoden für Menschen sind, die an eine Zahl geheftet werden …
– dandavis
11. August 2014 um 19:18 Uhr
Typoskript wird sich darüber beschweren, da das Datum auch für Date.parse(new Date()) / 1000 usw. ein anderer Typ als eine Zahl ist, betrachten Sie: Math.floor(new Date().getTime() / 1000) OR Math.floor (+neues Datum() / 1000)
– Edelwasser
1. September 2020 um 17:04 Uhr
Ich stimme für diese Antwort, weil sie nützlich ist, aber ich muss sagen, dass ich das leichter zu lesende new Date().getTime() dem +newDate() vorziehe
– Guillermo F. López
12. Oktober 2020 um 23:17 Uhr
Wenn Sie können, empfehle ich die Verwendung moment.js. Um die Anzahl der Millisekunden seit der UNIX-Epoche zu erhalten, tun Sie es
moment().valueOf()
Um die Anzahl der Sekunden seit der UNIX-Epoche zu erhalten, tun
Gibt es besondere Vorteile bei der Verwendung moment.js über sowas Math.floor(new Date() / 1000)?
– Alex
29. Oktober 2015 um 1:11 Uhr
@Alex – Für mich bevorzuge ich moment.js‘s prägnante Syntax und umfassendere Funktionalität. Sie können Dinge tun wie moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').add(3, 'days')
– Voller Stapel
30. Oktober 2015 um 2:41 Uhr
Hilfsmethoden, die es vereinfachen, kopieren/fügen Sie Folgendes über Ihrem JS ein:
Jetzt können Sie es verwenden, wo immer Sie wollen, durch einfache Anrufe:
// 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())
Demo:
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())
Sie sollten es vermeiden, die Prototypen von Objekten zu modifizieren, die Sie nicht besitzen
– James Monger
4. Dezember 2018 um 12:06 Uhr
In Maschinenschrift einfach ausführen Math.floor(new Date().getTime() / 1000)
der einen Epochenzeitstempel in Sekunden generiert.
Das AWS-SDK enthält Hilfsfunktionen zum Konvertieren des Amazon-Datumsformats.
Beispielsweise gibt es in einem Rückruf von einem S3-Get-Objekt eine Eigenschaft „LastModified“ im Amazon-Datumsformat. (Es scheint, dass sie nichts anderes tun, als die Standard-Datumsklasse für ihre Datumseigenschaften wie die Eigenschaft „LastModified“ des S3-Objekts zu exportieren.) Dieses Format enthält einige Dienstprogramme für verschiedene integrierte Formate (leider keine für die Unix-Epoche):
Die AWS utils-Funktion enthält jedoch ein „date“-Modul mit anderen Funktionen, einschließlich einer unixTimestamp-Methode:
let awsTime = response.LastModified
let unixEpoch = Math.floor(AWS.util.date.unixTimestamp(awsTime))
Hinweis: Diese Methode gibt standardmäßig einen Gleitkommawert zurück. Also die Math.floor()
Funktionscode aus aws-sdk.js (neueste):
/**
* @return [Integer] the UNIX timestamp value for the current time
*/
unixTimestamp: function unixTimestamp(date) {
if (date === undefined) { date = util.date.getDate(); }
return date.getTime() / 1000;
}
Es gibt auch Methoden für rfc822 und iso8601
Verwenden von momentjs:
Die folgenden zwei Variablen haben denselben Wert:-
+new Date() == das Unix-Datum
– dandavis
11. August 2014 um 19:04 Uhr
@dandavis Eigentlich ist das nur das Datum. Sie müssen anrufen
getTime()
Millisekunden zu bekommen.– Tadman
11. August 2014 um 19:08 Uhr
@tadman: nein, das “+” zwingt das Datum in seinen valueOf () -Wert, der eine Zahl ist, die die Anzahl der ms seit dem Beginn von 1970 darstellt. Kurz gesagt, Sie brauchen nie getTime()
– dandavis
11. August 2014 um 19:10 Uhr
Das ist eine interessante Optimierung. Dieser Wert ist immer noch Millisekunden, also müssen Sie durch 1000 teilen, um Sekunden zu erhalten.
– Tadman
11. August 2014 um 19:13 Uhr