как рассчитать время другой страны.используя мое локальное машинное время в c #? - PullRequest
1 голос
/ 28 сентября 2010

как рассчитать время другой страны.использование моего локального машинного времени в c #?

Пример:

Моя система имеет индийское время, а мой массив содержит все страны по Гринвичу.

Как выполнить расчет, чтобы получитьвремя другой страны?

, если мое время 17:00, если страна Пакистан, это должно показывать 16:30

Ответы [ 3 ]

5 голосов
/ 28 сентября 2010

Предполагая, что вы используете .NET 3.5 или выше, вам нужно получить право TimeZoneInfo (например, по идентификатору). С этого момента это довольно просто - я бы посоветовал вам использовать UTC везде, где это возможно, и, вероятно, DateTimeOffset вместо DateTime, поскольку это менее двусмысленно. Возьмите текущее время с DateTimeOffset.UtcNow, найдите соответствующий часовой пояс для конвертации и затем используйте TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo). Это даст вам соответствующий новый DateTimeOffset (то есть смещение на соответствующую сумму в целевом часовом поясе), который вы затем сможете соответствующим образом отформатировать.

1 голос
/ 28 сентября 2010

Во-первых, убедитесь, что ваш DateTime имеет DateTimeKind.Local (или UTC уже имеет действительное время UTC).Если этого не произойдет, вы можете преобразовать это:

myDate.SpecifyDateTimeKind(DateTimeKind.Local)

(Сделайте это как можно ближе к месту, где дата была создана; это сберегает путаницу позже.)

Теперь найдите часовой пояс дляСтрана, в которой вы заинтересованы:

// In case you don't know what the key is:
var allTimeZones = TimeZone.GetSystemTimeZones();

// Then when you have the key:
var theirTimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneKey);
TimeZoneInfo.ConvertTimeBySystemTimeZoneId(myDateTime, theirTimeZone);

Надеюсь, это поможет.

0 голосов
/ 28 сентября 2010

Для начала вы можете написать функцию, в которой вы можете передавать как текущее время (ИНДИИ), так и разницу во времени (в терминах + час: мин или - час: мин). Ваш код может затем вычислить результат и передать его обратно.

string time(string IndiaTime, string timeDifference) {
 string array1 = IndiaTime.split(':');
 // Over here I have considered you have passed the time in 24 hour format.
 int timeinMinutes = Convert.ToInt32(array1[0]) * 60 + Convert.ToInt32(array[1]);
 timeinMinutes = timeinMinutes + timeDifference;
 int minutes = time % 60;
 int hour = time / 60;
 If(hour > 24)
 hour = hour - 24;
 String finalTime = Convert.ToString(hour) + ":" + Convert.ToString(minutes);
 return finalTime;
}

Помимо этого вы можете использовать различные встроенные классы C #, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...