um die Werte der unterschiedlichen Time-Zone zu testen, stelle ich meine lokale Zeitezonen manuell um.
Die Daten werden von der Datenbank korrekt zum Javascript übertragen
Woher weisst das? So weit ich dich verstanden habe, gibt dein C#-Code die Zeit als Text in der Form "Date(1435701600000)" aus.
Diese Zahl stellt die Unix-Zeit dar, umgerechnet den 1. Juli 2015, 0 Uhr Berliner Zeit.
In deiner Datenbank hast du Zeiten im Format "2013-07-01 00:00:00.000" - ich sehe da keine Zeitzone! Das bedeutet, wenn du an deinem Datenbank-Rechner die Zeitzone umstellst, dann gibt er dir eine andere Unix-Zeit aus, weil er sich zwangsläufig bei deiner zonenlosen Datenbank-Zeit eine Zeitzone dazudenken muss, um auf die Zeitzonen-behaftete Unix-Zeit zu kommen.
Arbeitest du nur mit Zeiten um Mitternacht herum, bekommst du dann auch das falsche Datum.
Noch nicht verstanden habe ich, ob du nur mit solchen Zeiten um Mitternacht und den Monatswechsel herum testest oder ob das Problem auch tagsüber bzw. monatsmittig, zum Beispiel bei "2013-02-17 18:02:49.000" auftritt. In letzterem Fall ist die Ursache woanders.
Ich weiß echt nicht, was da schiefläuf. Ich habe das Ganze auch mit UTCDate versucht, leider kein erfolg.
Das oben genannte Problem hat seine Ursache nicht auf Seiten Javascripts. Die Unix-Zeit hat eine Zeitzoneninformation, die Javascript-Funktionen wandeln sie ebenfalls in eine Angabe mit Zeitzone um, wahlweise in die örtliche Zeit oder in UTC.
Die Zeitzone fehlt in deiner Datenbank und folgend bei der Umwandlung aus der Datenbank heraus, also in deinem C#-Code.
Du hast noch keinen vollständigen Code mit Eingabe und Ausgabe gezeigt, nur aus dem Zusammenhang gerissene Stücke. Zeige doch bitte mal zwei, drei vollständige Datenbeispiele en bloc:
- Was steht in der Datenbank? Welche Zeitzone ist an diesem Rechner eingestellt?
- Was wird für 1. als JSON-Daten ausgegeben? Welche Zeitzone ist an diesem Rechner eingestellt?
- Welches Datum landet für 2. im Javascript-Date-Objekt? Welche Zeitzone ist an diesem Rechner eingestellt?