Angeben von datetime-timezone ohne änderung Wert

Frage ich mich, wie man über das ändern der Zeitzone für ein DateTime-Objekt, ohne tatsächlich den Wert ändern. Hier ist der hintergrund...

Habe ich eine ASP.NET MVC-Website gehostet auf AppHarbor und der server hat seine Zeit auf UTC eingestellt ist. Wenn ich ein Formular Absenden von meiner Seite aus mit einem datetime-Wert, sagen 9/17/2013 4:00 Uhr, kommt es auf den server mit diesem Wert. Aber dann, wenn ich tun:

public ActionResult Save(Entity entity)
{
    entity.Date = entity.Date.ToUniversalTime();
    EntityService.Save(entity);
}

...es falsch hält Sie es, wie die gleiche Zeit (4 Uhr morgens), da der server bereits auf UTC-Zeit. So nach der Umstellung auf UTC und speichern der Datenbank, den Datenbank-Wert ist 2013-09-17 04:00:00.000, wenn es wirklich sein sollte, 2013-09-17 08:00:00.000, wie der browser auf EST. Ich hatte gehofft, dass nach dem senden des Formulars und die übergabe der Werte an die controller-Aktion, es würde den DateTime-timezone des Browsers (EST), sondern das server-host (UTC), aber das ist nicht geschehen.

In jedem Fall, jetzt bin ich stecken mit einem DateTime-Objekt, das enthält die korrekte Datum/Zeit-Wert, aber zur falschen Zeit-zone, so kann ich nicht richtig konvertieren auf UTC. Ich Speichere die Zeitzone von jedem Benutzer, so dass, wenn es eine Möglichkeit zum festlegen der Zeitzone für das DateTime-Objekt, ohne tatsächlich den Wert ändern (ich kann das nicht TimeZoneInfo.ConvertTime, weil Sie ' ll ändern Sie den Wert), dann hätte ich das richtige Datum/Uhrzeit-Wert UND die richtige Zeit-zone, dann könnte ich sicher tun date.ToUniversalTime. , Die being said, ich habe nur gesehen, wie ändern Sie die ART von DateTime, nicht von der Zeitzone, ohne Ihren tatsächlichen Wert.

Irgendwelche Ideen?

InformationsquelleAutor Justin | 2013-09-17
Schreibe einen Kommentar