2014-06-16 1 views
0

Учитывать меня 2 раза, которые для разных стран всего:Вычисление разницы во времени между 2 разное время в разных часовых поясах с учетом дневного света

"2013/02/11 13:20:44" (Tehran possibly UTC+3:30 or UTC+2:30 due to day light saving) 
"2013/02/11 15:20:44" (Abu Dhabi possibly UTC+4:00 or UTC+3:00 due to day light saving) 

Question1: Как я могу точно преобразовать эти времена to Utc?

Я хочу упомянуть, что дневной свет не является фиксированной информацией и может меняться время от времени и от страны к стране.

Например, в 2010 году у Ирана не было дневных сбережений по некоторым политическим причинам.

Вопрос2: Есть ли какое-то доверенное место или веб-сервис с этой информацией?

+0

Вы, вероятно, хотите посмотрите https://code.google.com/p/noda-time/ – oleksii

+1

Большая часть информации, которую вы ищете, можно найти в [теге wiki времени] (http://stackoverflow.com/tags/ часовой пояс/данные). Короткий ответ: Используйте [TimeZoneInfo] (http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx) или [Noda Time] (http://nodatime.org). –

ответ

3

Для получения обновленной информации .net приложения Time Zone с обновлениями для Windows, так что если у вас сервер всегда есть последние обновления, вы не будете иметь проблемы с часовыми поясами.

И если вам нужно преобразовать время, вы можете использовать TimeZoneInfo класс:

TimeZoneInfo.ConvertTime(new DateTime(2005, 6, 1), TimeZoneInfo.FindSystemTimeZoneById("Iran Standard Time"), TimeZoneInfo.Utc) 

И если вам нужно, вы можете получить AdjestmentRules часовых поясов:

TimeZoneInfo.FindSystemTimeZoneById("Iran Standard Time").GetAdjustmentRules(); 
+0

Да, поддерживается, поэтому, если он доверяет информации о часовом поясе на своей локальной установке в .NET и ОС, так оно и есть. Обратите внимание, что существует метод 'TimeZoneInfo.ConvertTimeToUtc'. –

+0

Считает ли он экономию дневного света? Что делать, если мы не можем доверять ОС? – mehrandvd

+1

@mehrandvd Да, он знает о дневной экономии света. Ну, если вы не можете доверять ОС. Вам нужно будет найти другого поставщика информации о часовом поясе (здесь я не советую) или создать собственные часовые пояса для стран, которые вам нужны – Uriil

0

Вы можете попробовать использовать Noda Time

Более подробную информацию можно найти in this thread

+0

http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

+0

Я действительно отвечал на вопрос 2, у меня не так много опыта с .net, подумал, что это может быть более полезно, чем оставить их полностью в темноте, каждый маленький помогает. – Frugras

Смежные вопросы