Ich hab folgendes Phänomen festgestellt.
Angenommen ich erstelle in einer Webseite per Javascript ein neues Datum anhand einer Benutzereingabe
var myDate = new Date(year,month,day);
[/PHP]
dann erhalte ich zum Beispiel folgendes Object
[PHP]
Sat Mar 1 00:00:00 UTC+0100 2008
Was für meine Zeitzone ja korrekt ist.
Wenn ich dieses nun per Ajax an eine WebMethod übertrage
PageMethod.Foo(myDate);
bzw.
[WebMethod(true)]
public static void Foo(DateTime myDate)
[/PHP]
dann erhalte ich Serverseitig in myDate {29.02.2008 23:00:00}
Es wird also automatisch die Stunde Zeitverschiebung abgezogen, so dass ich ein ganz anderes Datum erhalte.
Die Frage ist wieso bzw. wie bekomme ich wieder das auf der Seite eingegebene Datum? Der Typ des C# DateTime Objects ist auch UTC, so das die Zeitangabe schon stimmt, aber das bringt mich ja nicht weiter weil ich als Datum den 1.3 und nicht den 29.2 brauche. Denn theoretisch müsste der Typ des DateTime Objekts ja nicht UTC sondern UTC+1 sein, aber den gibt es ja nicht.
Ich könnte jetzt natürlich ToLocalTime auf dem Server aufrufen um das wieder umzurechnen, aber das funktioniert ja auch nur wenn sich Server und Client in der selben Zeitzone befinden und außerdem müsste man dann ja jedes Datumsobjekt was zum Server übertragen wird manuell anpacken.
Da muss es doch irgendeinen automatismus geben... :confused: