2012-04-11 2 views
7

Je reçois une date de côté serveur C# en utilisant le code suivant:Javascript DATE et C# Date - Quelle est la meilleure solution?

DateTime d1 = new DateTime(1970, 1, 1); 
DateTime d2 = (DateTime)c.ccdTimestamp2; 
long x = new TimeSpan(d2.Ticks - d1.Ticks).TotalMilliseconds; 

Quand je reçois mon code sur le côté javascript:

function (timestamp) { 
    alert("testing :" + new Date(timestamp)) 
} 

Cela me donne une date complètement formatée mais elle pas apporter l'heure de mon fuseau horaire car s'il est 17h15 ici, il me donne 19h15 GMT +2! Au début, j'ai simplement essayé de passer mon horodatage C#, sans le code ci-dessus et j'ai trouvé cette question: How do I format a Microsoft JSON date? Mais je n'ai aucune idée de ce que JSON est et je ne pouvais pas dériver ce que je peux faire! Est-il plus facile d'utiliser JSON? Si oui, quelqu'un peut-il me guider? Merci beaucoup


Edit: La solution - Je n'ai pas utilisé le temps universel sur le côté serveur. J'ai laissé le code côté serveur comme il est. Tout ce que je fait est ceci:

new Date(timestamp).toUTCString() 
+1

Le serveur et le client sont-ils situés dans des fuseaux horaires différents? –

+0

Non. Je ne fais que tester mon code – test

Répondre

10

Ce que vous devez faire est:

  • Utilisez toujours temps UTC sur le serveur
  • Envoyer fois UTC le navigateur comme horodatage d'unité comme vous le faites maintenant
  • Convertir l'horodatage en heure locale dans le navigateur r

L'horodatage utilisé représente: 2012-04-11T15:46:29+00:00:

var d = new Date (1334159189000); 
// gives you back 2012-04-11T15:46:29+00:00 in a slightly different format, but the timezone info matches UTC/GMT+0 
d.toUTCString(); 
// gives you back your local time 
d.toLocaleString(); 

vient de créer un jsFiddle pour montrer qu'il fait ce qu'il est censé:
http://jsfiddle.net/t8hNs/1/

+0

Quand j'essaye avec mes tiques C# ça ne marche pas. Le temps est compté: 635834482125955879 –

3

vous pouvez utiliser JavaScriptSerializer

string json = new JavaScriptSerializer().Serialize(DateTime.Now); 
+0

Je ne peux même pas faire référence à System.Web.Script ...:/ – test

+0

@test Et je ne vois pas comment aider ceux qui ne peuvent même pas référencer System. Web.Script':/ –

+0

Je suis désolé mais je ne le trouve pas dans les références sous l'onglet 'système'. Ou devrais-je chercher ailleurs? – test

4

utilisation

Questions connexes