Dans l'après-midi, nous avons rencontré un problème dans la conversion des formats de date de MVC et EXTJS. Le résultat de la sérialisation d'un objet DateTime à partir du côté serveur .NET est un format de chaîne, tel que '/ date (1335258540000) /' .
L'Integer 1335258540000 est en fait un intervalle d'un milliseconde entre le 1er janvier 1970 et cette datetime. Via JavaScript, utilisez la fonction EVAL pour convertir cette chaîne de date en un objet de date avec un fuseau horaire, comme suit
Utiliser var date = eval ('new' + eval ('/ date (1335258540000) /'). Source) pour obtenir un objet JS
Vérifiez clairement par alerte (date).
Mar 24 avril 17:09:00 UTC + 0800 2012
Ce qui précède est une chaîne obtenue automatiquement en sérialisant la date de C # JSON. Vous pouvez également écrire une fonction pour obtenir ce numéro via C #, par exemple
public long MilliTimeStamp (DateTime thedate) {DateTime d1 = new DateTime (1970, 1, 1); DateTime d2 = thedate.touversaltime (); Timespan ts = new TimeSpan (d2.Ticks - d1.ticks); retour (long) t.totalmillisecondes; }La fonction ci-dessus est la même que l'entier dans la chaîne obtenue en utilisant la sérialisation JSON.
Cependant, lors du retour du côté serveur du client, il y a un problème avec la date. Comment transmettre l'objet de date de JavaScript vers le côté du serveur?
Tout d'abord, obtenez cet entier via getTime () dans la date JavaScript, puis analysez l'entier sur le serveur et le construisez dans un objet C # DateTime. L'idée est probablement comme ça, mais j'ai rencontré des problèmes quand je suis retourné dans la direction opposée.
Public Datetime Converttime (Long Milliontime) {long timeTricks = new DateTime (1970, 1, 1) .Ticks + Milliontime * 10000; renvoyer une nouvelle datetime (timeTricks); }Les résultats obtenus via Converttime ont révélé que le temps était de 8 heures de moins, ce qui était le fuseau horaire du serveur, le temps de huitième zone est, ce qui signifie que 8 heures de nanosecondes doivent être ajoutées, car l'unité horaire de C # est de 1 millionème de seconde, une heure est de 3600 secondes, c'est-à-dire 8 * 3600 * 1000000000000000000
Ainsi, la fonction Converttime a été modifiée, la bonne est la suivante:
Public DateTime Converttime (Long Milliontime) {long timeTricks = new DateTime (1970, 1, 1) .Ticks + Milliontime * 10000 + Timezone.currentTimeZone.getUtCoffset (DateTime.Now) .Hours * 3600 * (Long) 100000000; renvoyer une nouvelle datetime (timeTricks); }L'exemple simple ci-dessus de la conversion des formats de temps et de date de JS et C # est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.