Запуск asp.net mvc 2 на win 7 с .net 4.0
У меня есть метод действия контроллера, который получает 2 объекта DateTime из формы. Пользовательский интерфейс в форме использует указатель даты jQueryUi (не уверен, что это имеет значение).
Пользователь, заполняющий эту форму, ВСЕГДА будет вводить дату / время в гавайском часовом поясе.
Я хочу преобразовать это время в UTC и сохранить его в базе данных.
Когда я вызываю TimeZoneInfo.ConverTime (DateTime, TimeZoneInfo, TimeZoneInfo), он возвращает точно такую же дату и время, что и я, без каких-либо преобразований. Я проверил отладчик, и единственное, что изменилось, это то, что он изменил свойство DateTime.Kind на DateTimeKind.Utc.
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);
}
Я также попробовал альтернативную версию с теми же результатами.
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 - это простой класс ViewModel с двумя свойствами даты и времени, называемыми StartDate и EndDate.
Хочу подчеркнуть, мне все равно, где находится сервер, мне все равно, где находится пользователь. Пользователь всегда будет вводить время в гавайском часовом поясе, и сервер всегда должен преобразовывать эту дату в UTC.
По сути, я хочу добавить 10 часов ко времени, которое пользователь вводит (с hawaiian в utc), и я мог бы добиться этого, просто вызвав .AddHours (10), и это было бы просто замечательно. Но позже в будущем мне понадобится это приложение, чтобы быть более гибким.