У меня есть страница, которая генерирует файлы vCal и iCal для импорта событий в Outlook и iCal. Эти почтовые клиенты (Outlook & iCal) будут принимать даты в формате UTC, поскольку они знают смещение пользователя и будут обрабатывать ввод в нужное время. Наш клиент, для которого мы пишем этот код, базируется в восточном часовом поясе США, и я тоже. Их хост находится в центральном часовом поясе (на 1 час позади восточного). Я хотел бы, чтобы код обрабатывал это без каких-либо жестко закодированных смещений. Мой код в настоящее время получает DateTime из нашей CMS и преобразуется в UTC для Outlook / iCal. Это означает, что значение DateTime из CMS относительно местоположения хостинга:
// Start Date Time
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Когда я запускаю это на своем локальном компьютере, все нормально, потому что DateTime в CMS основан на восточном часовом поясе нашего клиента, и я тоже, поэтому процесс происходит в восточном направлении -> UTC -> в Outlook, который затем переходит в UTC -> Восточный, и все хорошо. Когда я развертываюсь на сервере в Central, DateTime из CMS находится в часе езды от Eastern. Как я могу автоматически получить смещение от восточного и добавить его до того, как преобразовать в UTC? Мне, очевидно, нужно это для обработки как стандартного времени (EST), так и летнего времени (EDT). Я хотел бы сделать это программно без жестко запрограммированных значений, чтобы он всегда работал правильно, независимо от того, в каком часовом поясе вы находитесь. если я передам этот код кому-то для разработки в Индии, он должен автоматически обработать смещение локального сервера и соответственно изменить его.
Мне нужно сделать что-то вроде этого, где я применяю смещение к восточному времени перед преобразованием в UTC:
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ApplyEasternOffset().ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Извините, если это тема, которая обсуждалась ранее, я просто не уверен в лучших терминах для поиска такого вопроса. Заранее спасибо.