Wie soll ich ein JavaScript-Datumsobjekt in Ticks konvertieren? Ich möchte die Häkchen verwenden, um das genaue Datum für meine C # -Anwendung nach der Synchronisierung der Daten zu erhalten.
c#
javascript
Talha
quelle
quelle
utcnow
in Ticks (relativ zu 1970) in die Seite einfüge und die Differenz zwischen diesem Wert und+new Date()
beim Seitenstart speichere . Dann können alle Daten / Zeiten um diesen Betrag verrechnet werden. Jeder Fehler ist dann nur auf die Seitenlatenz zurückzuführen.Antworten:
Wenn Sie Ihr
DateTime
Objekt in universelle Ticks konvertieren möchten, verwenden Sie den folgenden Codeausschnitt:var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);
quelle
Der
Date
Ursprung des JavaScript- Typs ist die Unix-Epoche: Mitternacht am 1. Januar 1970.Der
DateTime
Ursprung des .NET- Typs liegt am 1. Januar 0001 um Mitternacht.Sie können ein JavaScript-
Date
Objekt wie folgt in .NET-Ticks übersetzen :var yourDate = new Date(); // for example // the number of .net ticks at the unix epoch var epochTicks = 621355968000000000; // there are 10000 .net ticks per millisecond var ticksPerMillisecond = 10000; // calculate the total number of .net ticks for your date var yourTicks = epochTicks + (yourDate.getTime() * ticksPerMillisecond);
quelle
(621355968e9 + (new Date()).getTime() * 1e4)
Verdichtet diese 4 Zeilen, sobald Sie das Verständnis haben. Großer Anteil @LukeHWenn Sie mit "Häkchen" so etwas wie "Millisekunden seit der Epoche" meinen, können Sie ".getTime ()" aufrufen.
var ticks = someDate.getTime();
In der MDN-Dokumentation ist der zurückgegebene Wert ein
quelle
Erweitern der akzeptierten Antwort als Warum
635646076777520000
wird hinzugefügt.Javascript
new Date().getTime() or Date.now()
gibt die Anzahl der Millisekunden zurück, die von vergangen sindmidnight of January 1, 1970
.In .NET ( Quelle unter
Remarks
Abschnitten)621355968000000000
ist der Wert von Zecken vonmidnight Jan 1 01 CE
bismidnight Jan 1 1970
Also in .NET
Console.Write(new DateTime(621355968000000000)) // output 1/1/1970 12:00:00 AM
Daher, um Javascript-Zeit in .Net-Ticks umzuwandeln
var currentTime = new Date().getTime(); // 10,000 ticks in 1 millisecond // jsTicks is number of ticks from midnight Jan 1, 1970 var jsTicks = currentTime * 10000; // add 621355968000000000 to jsTicks // netTicks is number of ticks from midnight Jan 1, 01 CE var netTicks = jsTicks + 621355968000000000;
Jetzt in .NET
Console.Write(new DateTime(netTicks)) // output current time
quelle
Datum in JavaScript enthält auch Offset. Wenn Sie es loswerden müssen, verwenden Sie Folgendes:
return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);
Ich verwende Skeikhs Lösung und subtrahiere Ticks für 'Offset'.
quelle
Das sollte sein
date.GetTime()
. Beachten Sie, dass C # und Javascript unterschiedliche Anfangsdaten verwenden. Verwenden Sie daher Folgendes, um in C # DateTime zu konvertieren.public static DateTime GetDateTime(long jsSeconds) { DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); return unixEpoch.AddSeconds(jsSeconds); }
quelle