Laufen asp.net Mvc 2 auf win 7 mit .net 4.0TimeZoneInfo.ConvertTime konvertiert nicht alles
ich eine Controller-Aktion Methode, die zwei Datetime-Objekte aus einer Form erhält. Die Benutzeroberfläche im Formular verwendet den jQueryUi-Datapicker (nicht sicher, ob dies der Fall ist).
Der Benutzer, der dieses Formular ausfüllt, wird IMMER das Datum/die Uhrzeit in der hawaiianischen Zeitzone eingeben.
Ich möchte das in UTC Zeit konvertieren und in einer Datenbank speichern.
Wenn ich TimeZoneInfo.ConverTime (DateTime, TimeZoneInfo, TimeZoneInfo) aufrufe, gibt es exakt das gleiche Datum zurück, an dem ich es eingegeben habe, ohne eine Konvertierung durchzuführen. Ich überprüfte den Debugger und das einzige, was sich änderte, war, dass die Eigenschaft DateTime.Kind in DateTimeKind.Utc geändert wurde.
public ActionResult New(ScheduleNew data){
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
DateTime start = TimeZoneInfo.ConvertTime(data.StartDate, tz, TimeZoneInfo.Utc);
DateTime end = TimeZoneInfo.ConvertTime(data.EndDate, tz, TimeZoneInfo.Utc);
}
Ich habe eine alternative Version mit den gleichen Ergebnissen versucht.
public ActionResult New(ScheduleNew data){
DateTime start = new DateTime(data.StartDate.Year, data.StartDate.Month, data.StartDate.Day, data.StartDate.Hour, data.StartDate.Minute, data.StartDate.Second, DateTimeKind.Unspecified);
DateTime end = new DateTime(data.EndDate.Year, data.EndDate.Month, data.EndDate.Day, data.EndDate.Hour, data.EndDate.Minute, data.EndDate.Second, DateTimeKind.Unspecified);
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
StartDate = TimeZoneInfo.ConvertTime(start, tz, TimeZoneInfo.Utc);
EndDate = TimeZoneInfo.ConvertTime(end, tz, TimeZoneInfo.Utc),
}
ScheduleData ist nur eine einfache Ansichtsmodell-Klasse mit zwei Datum Zeit Eigenschaften genannt Startdate und EndDate.
Ich möchte betonen, ist mir egal, wo der Server befindet, ist mir egal, wo der Benutzer befindet. Der Benutzer gibt immer die Zeit in der hawaiianischen Zeitzone ein, und der Server sollte diese Datumzeit immer auf UTC umrechnen.
Grundsätzlich, was ich will, ist 10 Stunden zu der Zeit hinzufügen, die der Benutzer eintritt (Hawaiian zu Utc) und ich könnte erreichen, indem Sie einfach .AddHours (10) und es wäre in Ordnung. Aber später brauche ich diese App, um flexibler zu sein.
haben Sie das Problem gelöst? – Rory
Was war die Art von Daten.StartDate? – Rory