Sérialisation de date JSON et fuseaux horaires

Je vais avoir des problèmes d'affichage de la date sur le navigateur du client à l'aide d'un JSON objet sérialisé. L'utilisateur est en mesure de définir quelle heure de la zone afficher les données. Compte tenu de cela, je convertir la date UTC pour le temps de l'utilisateur de la zone sur le serveur. Ensuite, je veux sérialiser la date/temps (qui sont déjà convertis à la définition de leurs fuseau horaire) pour le navigateur via JSON.

Semble simple, mais le JSON sérialiseurs j'ai été en utilisant ont été gravement marinage vers le haut de mes dates. Le serveur est en UTC et le client est au centre de la (-6). Les dates sont ajustées (à 12 heures), même si je suis en précisant le type DateTime.Genre non spécifié.

En quelque sorte .NET ne sait quel fuseau horaire le navigateur du client est au et fuseau horaire, le serveur est en cours et il est la négation de -6 à partir de mes dates/heures, même si j'ai déjà réglé la fois par l'utilisateur paramètres et définissez les dates de' genre à être spécifiée. Comment puis-je obtenir le JSON sérialiseurs de ne PAS essayer de régler mes dates?

List<ErrorGridModel> models = Mapper.Map<ErrorCollection, List<ErrorGridModel>>(errors);
foreach (ErrorGridModel m in models)
{
    //convert UTC dates to user local dateTime - split out date vs. time for grouping & splitting columns
    DateTime dtLocal = TimeZoneInfo.ConvertTimeFromUtc(m.ErrorDate, this.AppContext.User.TimeZoneInfo);
    m.ErrorDate = new DateTime(dtLocal.Year, dtLocal.Month, dtLocal.Day, 0, 0, 0, DateTimeKind.Unspecified);
    m.ErrorTime = new DateTime(1900, 1, 1, dtLocal.Hour, dtLocal.Minute, dtLocal.Second, DateTimeKind.Unspecified);
}
IQueryable<ErrorGridModel> dataSource = models.AsQueryable();
return new ContentResult() { Content = JsonConvert.SerializeObject(dataSource.ToDataSourceResult(request), new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }), ContentType = "application/json" };
//return Json(dataSource.ToDataSourceResult(request));

ISO dates semblent fonctionner, mais je ne peux pas les utiliser comme je l'ai 3ème partie contrôle qui veulent le plus vieux format Microsoft... qui permet de régler l'heure les zones de sur-moi.

source d'informationauteur Bill Christenson