Мне нужно использовать некоторые даты и время из старой базы данных. Они представлены как строки. Даты: dd/MM/yy. Времена HH: мм.
Я хотел бы преобразовать их в UTC, как только я вытащу их из базы данных. Я работаю над системами США, поэтому нужно общее время.
Проблема, с которой я столкнулся, заключается в том, как преобразовать их в значения UTC DateTime. Я могу провести синтаксический анализ и т.д. Реальная проблема, которую я имею в отношении часового пояса.
Я пытаюсь использовать следующий подход:
DateTime ukTime = // Parse the strings in a DateTime value.
TimeZoneInfo timeZoneInformation = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTimeOffset utcTime = new DateTimeOffset(ukTime, timeZoneInformation.BaseUtcOffset);
Однако это дает неправильные значения, если дата указана в британском летнем периоде.
Я могу использовать "GMT Daylight Time" в эти даты, но это требует от меня знать, когда происходит переключение. Я уверен, что должен быть менее трудоемкий способ.
Поскольку я не использую машину с настройками времени в Великобритании, я не могу полагаться на местное время.
В принципе, мне нужно что-то вроде:
// Works for both GMT (UTC+0) and BST (UTC+1) regardless of the regional settings of the system it runs on.
DateTime ParseUkTimeAsUtcTime(string date, string time)
{
...
}
Я просмотрел сообщения, но не смог найти ничего, что касалось этого напрямую. Несомненно, это также проблема с EST, EDT и т.д.