Comment convertir l'objet de date de JavaScript en tiques

Comment puis-je convertir JavaScript date object to ticks? Je souhaite utiliser les ticks pour obtenir la date exacte de mon application C # après la synchronisation des données.

Si vous souhaitez convertir votre objet datetime en tiques universelles, utilisez l'extrait de code suivant

  var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000); 

Il y a 621355968000000000 ticks d'époque pour javascript du 1er janvier 1900 au 1er janvier 1970. Et ici, 10000 sont les tiques par milliseconde.

L'origine du type de Date JavaScript est l'époque Unix: minuit le 1er janvier 1970.

L'origine du type .NET DateTime est minuit le 1er janvier 0001.

Vous pouvez traduire un objet Date JavaScript en Date .NET comme suit:

 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); 

Si par "ticks" vous voulez dire quelque chose comme "millisecondes depuis l'époque", vous pouvez appeler ".getTime ()".

 var ticks = someDate.getTime(); 

À partir de la documentation MDN , la valeur retournée est une

Valeur entière représentant le nombre de millisecondes depuis le 1er janvier 1970 00:00:00 UTC (Unix Epoch).

Élargir la réponse acceptée comme pourquoi 635646076777520000 est ajouté.

Javascript new Date().getTime() or Date.now() renverra le nombre de millisecondes passées du midnight of January 1, 1970 .

Dans .NET ( source sous les sections Remarks )

Le type de valeur DateTime représente les dates et les heures avec des valeurs allant de 00:00:00 (minuit), 1er janvier 0001 Anno Domini (ère commune) à 11:59:59 PM, 31 décembre 9999 AD (CE) en grégorien calendrier.

621355968000000000 est la valeur des tiques à partir de midnight Jan 1 01 CE à midnight Jan 1 1970

Donc, dans .NET

  Console.Write(new DateTime(621355968000000000)) // output 1/1/1970 12:00:00 AM 

Par conséquent, convertir le temps de javascript en tiques .Net

  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; 

Maintenant, dans .NET

  Console.Write(new DateTime(netTicks)) // output current time 

La date en JavaScript contient également des décalages. Si vous devez vous en débarrasser, utilisez les suivantes:

 return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000); 

J'utilise la solution de Skeikh et supprime les tiques pour «offset».

Cela devrait être date.GetTime() . Soyez conscient que C # et Javascript utilisent différentes dates initiales, alors utilisez quelque chose comme ceci pour convertir en C DateTime.

 public static DateTime GetDateTime(long jsSeconds) { DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); return unixEpoch.AddSeconds(jsSeconds); }