Die Berechnung von Millisekunden seit 1970 in C # ergibt ein anderes Datum als JavaScript

8

Ich muss die Methode JavaScript getTime in C # berechnen.

Zur Vereinfachung habe ich ein festes Datum in UTC gewählt und die C # verglichen:

%Vor%

und die JavaScript-Ergebnisse:

%Vor%

Irgendwelche Hinweise darauf, was ich falsch mache?

Danke!

    
mo5470 27.02.2014, 21:43
quelle

3 Antworten

1

Wenn Sie möchten, dass die Eingabe in UTC erfolgt, sollten Sie stattdessen Folgendes tun:

%Vor%

Wie SLaks darauf hingewiesen hat, laufen die Monate 0-11, aber selbst dann - müssen Sie das Datum als UTC initialisieren, wenn Sie die Antwort in UTC wollen. In Ihrem Code initialisierten Sie ein lokales Datum und konvertierten danach in UTC. Das Ergebnis wäre abhängig von der Zeitzone des Computers, auf dem der Code ausgeführt wird. Mit Date.UTC erhalten Sie einen Zeitstempel zurück - nicht ein Date -Objekt, und es wird unabhängig davon, wo es ausgeführt wird, das gleiche Ergebnis sein.

Von der Debugging-Konsole von Chrome:

Dies ist der gleiche Wert, der von Ihrem .NET-Code zurückgegeben wird. Das sieht gut aus, außer dass ich ein long , nicht ein string zurückgeben würde.

    
Matt Johnson 02.03.2014, 23:31
quelle
10

JavaScript-Monate sind nullbasiert.
12 bedeutet Januar des nächsten Jahres.

Sie möchten 11 .

    
SLaks 27.02.2014 21:48
quelle
0

Das Datum JS ist falsch, glaube ich. Lassen Sie die var utcDate -Zeile weg und geben Sie nur d.getTime()

aus

Die Zeit zwischen zwei Daten ist unabhängig von Zeitzone und Offset gleich. Zeitzonen sind relativ zu einem ACTUAL-Zeitpunkt. Wenn Sie also .getTime() an der UTC- oder EST- oder PST-Datumsangabe aufrufen, ist dies im Vergleich zu 1970-1-1 derselben Zeitzone derselbe.

%Vor%

BEARBEITEN: Per @Slaks oben verwenden Sie auch nicht den 0-basierten Monat (worüber ich auch keine Ahnung hatte).

    
Haney 27.02.2014 21:44
quelle