var now = DateTime.Now;
var s = new JavaScriptSerializer(); var serialized = s.Serialize(now); var notNow = s.Deserialize<DateTime>(serialized);
Denn sofern man nicht UTC als Zeitzone verwendet sind now und notNow nicht gleich. Gewissermaßen sind sie schon gleich weil now.Kind == DateTimeKind.Local und notNow = DateTimeKind.Utc ist und beide den selben Zeitpunkt beschreiben. Intuitiv ist es aber nicht.
Vielleicht sollte Serialize() standardmäßig eine Exception werfen, wenn es auf ein DateTime stößt, dass keine UTC-Zeit beschreibt. Dann könnte man vielleicht über s.AllowLocalDateTimes = true dieses Verhalten steuern. So wäre man beim Programmieren gezwungen sich darüber Gedanken zu machen, mit was für DateTimes man arbeitet.