Я должен использовать некоторые даты и время из устаревшей базы данных. Они представлены в виде строк. Даты - дд / мм / гг. Время ЧЧ: мм.
Я бы хотел преобразовать их в 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 и т. Д.?