¿Cómo debo convertir el objeto de fecha de JavaScript en ticks? Quiero usar los ticks para obtener la fecha exacta de mi aplicación C # después de la sincronización de datos.
c#
javascript
Talha
fuente
fuente

utcnowticks del servidor (en relación con 1970) en la página y almacenando la diferencia entre ese valor y+new Date()al inicio de la página. Entonces toda la fecha / hora se puede compensar por esa cantidad. Cualquier error se reduce a la latencia de la página.Respuestas:
Si desea convertir su
DateTimeobjeto en ticks universales, utilice el siguiente fragmento de código:var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);fuente
El
Dateorigen del tipo de JavaScript es la época de Unix: la medianoche del 1 de enero de 1970.El
DateTimeorigen del tipo .NET es la medianoche del 1 de enero de 0001.Puede traducir un
Dateobjeto JavaScript a .NET ticks de la siguiente manera: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);fuente
(621355968e9 + (new Date()).getTime() * 1e4)condensa estas 4 líneas una vez que tenga la comprensión. Gran participación @LukeHSi por "ticks" te refieres a "milisegundos desde la época", puedes llamar a ".getTime ()".
var ticks = someDate.getTime();De la documentación de MDN , el valor devuelto es un
fuente
Ampliando la respuesta aceptada como por qué
635646076777520000se agrega.Javascript
new Date().getTime() or Date.now()devolverá el número de milisegundos pasadosmidnight of January 1, 1970.En .NET ( fuente en
Remarkssecciones)621355968000000000es el valor de los ticks demidnight Jan 1 01 CEamidnight Jan 1 1970Entonces, en .NET
Console.Write(new DateTime(621355968000000000)) // output 1/1/1970 12:00:00 AMPor lo tanto, convertir el tiempo de JavaScript a .Net ticks
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;Ahora, en .NET
Console.Write(new DateTime(netTicks)) // output current timefuente
La fecha en JavaScript también contiene desplazamiento. Si necesita deshacerse de él, use lo siguiente:
return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);Utilizo la solución de Skeikh y resto ticks para 'offset'.
fuente
Eso debería ser
date.GetTime(). Tenga en cuenta que C # y Javascript usan diferentes fechas iniciales, así que use algo como esto para convertir a C # DateTime.public static DateTime GetDateTime(long jsSeconds) { DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); return unixEpoch.AddSeconds(jsSeconds); }fuente