я немного потерян в часовом поясе :)
Мне снабдили данные временем в UTC. Сервер находится в Нидерландах, таким образом, мы живем в utc+1 (теперь, с daylightsavingtime, в UTC + 2)
Теперь клиент говорит: дайте мне данные с 5-го августа.
Таким образом, я должен вычислить время UTC с 'его времени'. Для этого я должен знать:
что является Вашим смещением UTC (мы сохранили это в его профиле, скажем, UTC-6) Вы в daylightsavingtime (потому что затем мы должны добавить +1 и заставить UTC сместить-5),
Затем мои вопросы:
Могу я спрашивать платформу .NET: страна XX имеют daylightsavingtime?
Могу я спрашивать платформу .NET: является 08-05-2010T00:00:00 в стране XXX daylightsavingtime в тот момент?
я пробовал.ToLocalTime (), но это только дает мне местное время в сервере, и это не то, что я хочу, я хочу вычислить с часовым поясом пользователя, и также с тем, что в тот момент, если он находится в daylightsavingtime
Я также видел этот пример VB:
TimeZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
Dim Dated As DateTime = TimeZoneInfo.ConvertTimeToUtc(TempDate, TimeZone)
но по моему скромному мнению это не принимает во внимание, что пользователь в этом часовом поясе или не находится в daylightsavingtime (dst) страна. Например, один пользователь в этом часовом поясе находится в Нидерландах, имеющих dst, и еще один находится в другой стране, которая не имеет никакого dst.
Вы не можете спросить структуру о конкретной стране - но вы можете спросить о конкретном часовом поясе .
TimeZoneInfo
учитывает летнее время. (Черт возьми, иначе у него не было бы метода IsDaylightSavingTime
.) Если у вас есть два пользователя, один из которых в настоящее время наблюдает за DST, а другой нет, то они не 't в том же часовом поясе.
Если бы вы могли указать, о каких местах вы говорите, я мог бы попытаться выяснить, какие часовые пояса задействованы. (Обычно легче узнать имена Олсона, но не должно быть невозможным узнать идентификаторы Windows.)
Я повышаю свой комментарий до ответа. Кажется, это сложная проблема. Посмотрите http://www.timeanddate.com/time/dst2010.html , там есть таблицы летнего времени в разных странах мира. Вы не можете получить это с помощью статического кода, потому что летнее время меняется не только от страны к стране, но и из года в год.
Думаю, вам нужно вести таблицу с информацией о летнем времени и получать из нее информацию.
Или вы можете запросить веб-сервис, чтобы получить такую информацию.
Посмотрите на http://www.earthtools.org/webservices.htm#timezone веб-сервис, который вы можете запросить, чтобы узнать время в разных странах с учетом летнего времени (работает только для западных стран). Часовые пояса Европы). Также посмотрите http://www.geonames.org/export/web-services.html . Вы должны настроить геолокацию своих пользователей, чтобы пользоваться этими услугами.
Класс TimeZone имеет метод IsDaylightSavingTime, который принимает дату в качестве параметра. и вернуть логическое значение, указывающее, находится ли эта дата в летнем времени для этого часового пояса.