Muszę użyć niektórych dat i godzin ze starszej bazy danych. Są one reprezentowane jako łańcuchy. Daty to dd/MM/rr. Czasy to HH: mm.Konwertowanie czasów brytyjskich (zarówno BST, jak i GMT) reprezentowanych jako łańcuchy znaków do UTC (w języku C#)
Chciałbym przekonwertować te do UTC, jak tylko wyciągnę je z bazy danych. Pracuję nad systemami amerykańskimi, więc potrzebuję wspólnego czasu.
Problem, który napotykam, polega na przekonwertowaniu ich na wartości DateTime UTC. Mogę zrobić parsowanie itp. Prawdziwy problem, który mam dotyczy strefy czasowej.
Próbuję użyć następujące podejście:
DateTime ukTime = // Parse the strings in a DateTime value.
TimeZoneInfo timeZoneInformation = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTimeOffset utcTime = new DateTimeOffset(ukTime, timeZoneInformation.BaseUtcOffset);
to jednak daje niepoprawne wartości, jeżeli data jest w okresie British Summer czasu.
W tych terminach mogę używać "GMT Daylight Time", ale to wymaga ode mnie ustalenia, kiedy nastąpi przełączenie. Jestem pewien, że musi być mniej pracochłonny sposób.
Ponieważ nie używam urządzenia z ustawieniami czasu w Wielkiej Brytanii, nie mogę polegać na czasie lokalnym.
Zasadniczo, muszę coś takiego:
// 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)
{
...
}
mam prana posty, ale nie mógł znaleźć niczego, co ten adresowany bezpośrednio. Z pewnością jest to również problem z EST, EDT itp.?
Potrzebuję tego jako ogólnej metody TimeInTimeZone-> TimeInUTC. –