Wie konvertiere ich 07/26/2010
zu einem UNIX-Zeitstempel mit Javascript?
Holen Sie sich die Epoche für ein bestimmtes Datum mit Javascript
Asim Zaidi
Michael Mrozek
Sie können eine erstellen Date
Objekt und Anruf getTime
darauf:
new Date(2010, 6, 26).getTime() / 1000
-
Dem Monatsargument für den Datumskonstruktor mangelt es ein wenig an Konsistenz und es ist tatsächlich nullbasiert. Das bedeutet, dass 7 August ist, also müssen Sie 1 subtrahieren 🙂
– Andi E
29. Juli 2010 um 22:25 Uhr
-
@Andy – es ist eine verrückte Idee, Monate um -1 zu versetzen und den Rest beizubehalten, und genau das kann ein Space Shuttle verrückt machen, wenn JavaScript dort jemals verwendet werden sollte 🙂
– Anurag
29. Juli 2010 um 22:27 Uhr
-
Wahrscheinlich besser zu gehen: new Date(“2010-7-26”).getTime() / 1000 damit Sie nicht über Offsets nachdenken müssen.
– Vincent McNabb
29. Juli 2010 um 22:37 Uhr
-
@Vincent:
new Date("2010-7-26")
wird im Internet Explorer nicht analysiert. Datum Konstruktor stützt sich auf die Datum.parse() -Methode, wenn eine Zeichenfolge übergeben wird, die in ECMA-262 3rd Edition implementierungsabhängig und daher im IE notorisch unflexibel ist.– Andi E
30. Juli 2010 um 7:50 Uhr
-
Mögliche Fehler oder Missverständnisse könnte man auch bei der Angabe der Zeitzone minimieren. Zumindest die aktuellen (Linux-)Versionen von Firefox, Opera und Chrome unterstützen die Instanziierung eines JavaScript-Datums wie new Date(“Jan 1, 1970 GMT+00:00, 00:01”); was auch die Verwirrung über das richtige Monatsformat reduziert.
– Michael Besteck
31. August 2015 um 16:50 Uhr
new Date("2016-3-17").valueOf()
wird eine lange Epoche zurückkehren
Diego Queiroz
Einige Antworten erklären nicht die Nebenwirkungen von Variationen in der Zeitzone für das JavaScript-Datumsobjekt. Sie sollten diese Antwort also berücksichtigen, wenn dies für Sie ein Problem darstellt.
Methode 1: Abhängig von der Zeitzone des Computers
Standardmäßig gibt JavaScript ein Datum zurück, das die Zeitzone des Computers berücksichtigt, also getTime()
Das Ergebnis variiert von Computer zu Computer. Sie können dieses Verhalten überprüfen, indem Sie Folgendes ausführen:
new Date(1970, 0, 1, 0, 0, 0, 0).getTime()
// Since 1970-01-01 is Epoch, you may expect ZERO
// but in fact the result varies based on computer's timezone
Dies ist kein Problem, wenn Sie wirklich die Zeit seit Epoch unter Berücksichtigung Ihrer Zeitzone möchten. Wenn Sie also die Zeit seit der Epoche für das aktuelle Datum oder sogar ein bestimmtes Datum basierend auf der erhalten möchten Zeitzone des Computerskönnen Sie diese Methode weiterhin verwenden.
// Seconds since Epoch (Unix timestamp format)
new Date().getTime() / 1000 // local Date/Time since Epoch in seconds
new Date(2020, 11, 1).getTime() / 1000 // time since Epoch to 2020-12-01 00:00 (local timezone) in seconds
// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)
new Date().getTime() // local Date/Time since Epoch in milliseconds
new Date(2020, 0, 2).getTime() // time since Epoch to 2020-01-02 00:00 (local timezone) in milliseconds
// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)
Methode 2: Unabhängig von der Zeitzone der Maschine
Wenn Sie jedoch Schwankungen in der Zeitzone überwinden und Zeit seit der Epoche für erhalten möchten ein bestimmtes Datum in UTC (d. h. unabhängig von der Zeitzone), müssen Sie verwenden Date.UTC
Methode oder verschieben Sie das Datum von Ihrer Zeitzone auf UTC:
Date.UTC(1970, 0, 1)
// should be ZERO in any computer, since it is ZERO the difference from Epoch
// Alternatively (if, for some reason, you do not want Date.UTC)
const timezone_diff = new Date(1970, 0, 1).getTime() // difference in milliseconds between your timezone and UTC
(new Date(1970, 0, 1).getTime() - timezone_diff)
// should be ZERO in any computer, since it is ZERO the difference from Epoch
Wenn Sie also diese Methode verwenden (oder alternativ die Differenz subtrahieren), sollte das Ergebnis lauten:
// Seconds since Epoch (Unix timestamp format)
Date.UTC(2020, 0, 1) / 1000 // time since Epoch to 2020-01-01 00:00 UTC in seconds
// Alternatively (if, for some reason, you do not want Date.UTC)
const timezone_diff = new Date(1970, 0, 1).getTime()
(new Date(2020, 0, 1).getTime() - timezone_diff) / 1000 // time since Epoch to 2020-01-01 00:00 UTC in seconds
(new Date(2020, 11, 1).getTime() - timezone_diff) / 1000 // time since Epoch to 2020-12-01 00:00 UTC in seconds
// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)
Date.UTC(2020, 0, 2) // time since Epoch to 2020-01-02 00:00 UTC in milliseconds
// Alternatively (if, for some reason, you do not want Date.UTC)
const timezone_diff = new Date(1970, 0, 1).getTime()
(new Date(2020, 0, 2).getTime() - timezone_diff) // time since Epoch to 2020-01-02 00:00 UTC in milliseconds
// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)
IMO, es sei denn, Sie wissen, was Sie tun (siehe Hinweis oben), sollten Sie es vorziehen Methode 2da es maschinenunabhängig ist.
Schlussbemerkung
Obwohl die Empfehlungen in dieser Antwort und da Date.UTC
ohne ein bestimmtes Datum/eine bestimmte Uhrzeit nicht funktioniert, könnten Sie geneigt sein, den alternativen Ansatz zu verwenden und so etwas zu tun:
const timezone_diff = new Date(1970, 0, 1).getTime()
(new Date().getTime() - timezone_diff) // <-- !!! new Date() without arguments
// means "local Date/Time subtracted by timezone since Epoch" (?)
Das macht keinen Sinn und ist es wahrscheinlich FALSCH (Sie ändern das Datum). Achten Sie darauf, dies nicht zu tun. Wenn Sie die Zeit seit Epoche vom aktuellen Datum erhalten möchten UND ZEITSie sind höchstwahrscheinlich in Ordnung mit Methode 1.
Schauen Sie sich an http://www.w3schools.com/jsref/jsref_obj_date.asp
Es gibt eine Funktion UTC()
das gibt die Millisekunden aus der Unix-Epoche zurück.
Date.parse()
-Methode analysiert eine Zeichenfolgendarstellung eines Datums und gibt die Anzahl der Millisekunden seither zurück January 1, 1970, 00:00:00 UTC
.
const unixTimeZero = Date.parse('01 Jan 1970 00:00:00 GMT');
const javaScriptRelease = Date.parse('04 Dec 1995 00:12:00 GMT');
console.log(unixTimeZero);
// expected output: 0
console.log(javaScriptRelease);
// expected output: 818035920000
Entdecken Sie mehr unter: Datum.parse()
Neha M
Sie können auch die Funktion Date.now() verwenden.
Andri Los
Number(new Date(2010, 6, 26))
Funktioniert genauso wie oben. Wenn Sie Sekunden brauchen, vergessen Sie es nicht / 1000