Преобразуйте чье-то местное время во время UTC

я немного потерян в часовом поясе :)

Мне снабдили данные временем в UTC. Сервер находится в Нидерландах, таким образом, мы живем в utc+1 (теперь, с daylightsavingtime, в UTC + 2)

Теперь клиент говорит: дайте мне данные с 5-го августа.

Таким образом, я должен вычислить время UTC с 'его времени'. Для этого я должен знать:

что является Вашим смещением UTC (мы сохранили это в его профиле, скажем, UTC-6) Вы в daylightsavingtime (потому что затем мы должны добавить +1 и заставить UTC сместить-5),

Затем мои вопросы:

  1. Могу я спрашивать платформу .NET: страна XX имеют daylightsavingtime?

  2. Могу я спрашивать платформу .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.

8
задан Michel 5 August 2010 в 07:31
поделиться

3 ответа

Вы не можете спросить структуру о конкретной стране - но вы можете спросить о конкретном часовом поясе .

TimeZoneInfo учитывает летнее время. (Черт возьми, иначе у него не было бы метода IsDaylightSavingTime .) Если у вас есть два пользователя, один из которых в настоящее время наблюдает за DST, а другой нет, то они не 't в том же часовом поясе.

Если бы вы могли указать, о каких местах вы говорите, я мог бы попытаться выяснить, какие часовые пояса задействованы. (Обычно легче узнать имена Олсона, но не должно быть невозможным узнать идентификаторы Windows.)

6
ответ дан 5 December 2019 в 17:33
поделиться

Я повышаю свой комментарий до ответа. Кажется, это сложная проблема. Посмотрите http://www.timeanddate.com/time/dst2010.html , там есть таблицы летнего времени в разных странах мира. Вы не можете получить это с помощью статического кода, потому что летнее время меняется не только от страны к стране, но и из года в год.

Думаю, вам нужно вести таблицу с информацией о летнем времени и получать из нее информацию.

Или вы можете запросить веб-сервис, чтобы получить такую ​​информацию.

Посмотрите на http://www.earthtools.org/webservices.htm#timezone веб-сервис, который вы можете запросить, чтобы узнать время в разных странах с учетом летнего времени (работает только для западных стран). Часовые пояса Европы). Также посмотрите http://www.geonames.org/export/web-services.html . Вы должны настроить геолокацию своих пользователей, чтобы пользоваться этими услугами.

2
ответ дан 5 December 2019 в 17:33
поделиться

Класс TimeZone имеет метод IsDaylightSavingTime, который принимает дату в качестве параметра. и вернуть логическое значение, указывающее, находится ли эта дата в летнем времени для этого часового пояса.

2
ответ дан 5 December 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: