Holen Sie sich die Epoche für ein bestimmtes Datum mit Javascript

Lesezeit: 5 Minuten

Benutzer-Avatar
Asim Zaidi

Wie konvertiere ich 07/26/2010 zu einem UNIX-Zeitstempel mit Javascript?

Benutzer-Avatar
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

Benutzer-Avatar
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()

Benutzer-Avatar
Neha M

Sie können auch die Funktion Date.now() verwenden.

Benutzer-Avatar
Andri Los

Number(new Date(2010, 6, 26))

Funktioniert genauso wie oben. Wenn Sie Sekunden brauchen, vergessen Sie es nicht / 1000

1245280cookie-checkHolen Sie sich die Epoche für ein bestimmtes Datum mit Javascript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy