TimeZoneInfo.ConvertTime не ' t Преобразование чего угодно

Запуск 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), и все будет хорошо. Но позже мне понадобится это приложение, которое будет более гибким.

5
задан Cœur 13 August 2017 в 03:49
поделиться