Запуск asp.net mvc 2 на win 7 с .net 4.0
У меня есть метод действия контроллера, который получает 2 объекта DateTime из формы . Пользовательский интерфейс формы использует jQueryUi datepicker (не уверен, что это так).
Пользователь, который заполняет эту форму, ВСЕГДА будет вводить дату / время в гавайском часовом поясе.
Я хочу преобразовать это в Время в формате 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.
Я хочу Подчеркните, мне все равно, где находится сервер, мне все равно, где находится пользователь. Пользователь всегда будет вводить время в гавайском часовом поясе, и сервер всегда должен преобразовывать это datetime в UTC.
В основном я хочу добавить 10 часов ко времени, которое пользователь вводит (гавайский в utc), и я можно добиться этого, просто вызвав .AddHours (10), и все будет хорошо. Но позже мне понадобится это приложение, которое будет более гибким.