2012-04-11 12 views
7

jestem coraz datę z po stronie serwera C# za pomocą następującego kodu:JavaScript DATA i C# data - jakie jest najlepsze rozwiązanie?

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

Kiedy otrzymam kod po stronie javascript:

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

To daje mi całkowicie sformatowaną datę ale robi nie przyniosę czasu w mojej strefie czasowej, ponieważ jeśli jest tutaj 17.15, zapewnia mi 19,15 GMT +2!

Najpierw po prostu próbowałem podać mój kod czasowy C#, bez żadnego kodu powyżej i znalazłem to pytanie: How do I format a Microsoft JSON date? Ale nie mam pojęcia, czym jest JSON i nie mogłem wywnioskować, co mogę zrobić! Czy łatwiej używać JSON? Jeśli tak, czy ktoś może mnie prowadzić? Dziękuję bardzo


Edit: Rozwiązanie - Nie użyłem czasu uniwersalnego po stronie serwera. Zostawiłem kod po stronie serwera, jak jest. Wszystko zrobiłem to:

new Date(timestamp).toUTCString() 
+1

Czy serwer i klient znajdują się w różnych strefach czasowych? –

+0

Nie. Testuję mój kod. – test

Odpowiedz

10

Co należy zrobić, to:

  • Zawsze używaj UTC razy na serwerze
  • Wyślij UTC razy przeglądarka jako znaczniki czasu jednostki tak jak teraz
  • Konwertuj znacznik czasu na czas lokalny w przeglądarce r

Datownik stosowany oznacza: 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(); 

właśnie utworzony jsfiddle pokazać, że robi to, co ma na celu:
http://jsfiddle.net/t8hNs/1/

+0

Kiedy próbuję z moim kleszczem C#, to nie działa. Tytas czasu wynosi: 635834482125955879 –

3

można użyć JavaScriptSerializer

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

Nie mogę nawet odwołać się do System.Web.Script ...:/ – test

+0

@ test. Nie widzę sposobu, aby pomóc tym, którzy nie potrafią nawet nawiązać do Systemu. Web.Script':/ –

+0

Przykro mi, ale nie mogę go znaleźć w odnośnikach w zakładce "system". A może powinienem szukać gdzie indziej? – test

4

użytku

var currentDate = new Date(); 
//get off set from your browser 
var offset = Date.getTimezoneOffset(); 
Powiązane problemy